Я работаю над проектом Swiftui, где мне нужно динамически растянуть и изменить размер изображения, аналогичный тому, как изображения манипулируются в Photoshop. В частности, я хочу достичь следующих функций, с металлическими шейдерами, используемыми для эффектов рендеринга: , растягиваясь от краев:
< ul>
[*] Цель состоит в том, чтобы иметь возможность захватить и перетаскивать края или углы изображения (так же, как интерактивное изменение размера, вы видите в дизайнерских приложениях, таких как Photoshop). Когда края или углы перетаскивают, изображение должно растянуть и изменять его соотношение сторонна динамически. Слева, в правом верхнем, нижнем лево и правом нижнем) соответствующие части изображения должны растягиваться в режиме реального времени. < /li>
Пример: если я возьму верхний правый угол Из изображения только верхний правый участок изображения должен растянуться, сохраняя при этом левую сторону нетронутой. То же самое относится и к каждому краю и углу.
изменение размера с эффектами искажения:
Я хочу исказить изображение по мере изменения размера, что означает, что соотношение сторон не должно быть сохранено при растяжении или изменении размера. Это обеспечивает полностью свободный эффект растяжения, в отличие от ограничения исходным соотношением сторон. независимо, создание растянутого или искаженного эффекта.
рендеринг в реальном времени:
Эффект растяжения должен быть применен плавно во время перетаскивания, не вызывая заметного мерцания или задержки. Он должен чувствовать себя отзывчивым и плавным, когда пользователь перемещает углы или ребра, аналогично взаимодействию в инструментах графического проектирования. < /li>
< /ul> металлический шейдер (обязательный): < /strong> < /p>
Я определенно буду использовать металл для пользовательского рендеринга для обработки динамического растяжения и искажения изображения. применяются с гладкостью и производительностью. < /li>
< /ul>
Ключевые проблемы: < /strong> < /p>
Swiftui В модификаторах storbizable (), scaledtofit () и scaledtofill () все обеспечивают ограничения при соотношении сторон, что не подходит для этого варианта использования, поскольку я хочу растянуть свободную форму без поддержания соотношения сторон. < /li>
Способность перетаскивать и растягивать определенные части изображения (углы или края) в режиме реального времени имеет решающее значение, и Swiftui не имеет встроенной поддержки для этого. Плавные, преобразования в реальном времени являются ключевыми требованиями, которые необходимо реализовать жидкостью и эффективно, и именно здесь металлические шейдеры будут необходимы. < /li>
< /ul>
Что я попробовал: < /strong> < /p>
Я экспериментировал с модификатором Swiftui Resizeable (), но он недостаточно гибкий для этого использования Случай, поскольку он обеспечивает соблюдение ограничений соотношения сторон. к динамично преобразованию изображения таким образом, чтобы также обрабатывать искажения. Для этой цели. < /li>
< /ul>
желаемый результат: < /strong> < /p>
Изображение должно быть в состоянии свободно растягиваться и искажаться при перетаскивании любого угла или края, не сохраняя отношение сторон. < /li>
Металлические шейдеры должны использоваться для пользовательских эффектов рендеринга изображения, чтобы достичь плавного растяжения и искажения в реальном времени. < /li>
< /ul>
Пример изображения < /strong> (иллюстрация желаемого результата):
Чтобы проиллюстрировать, вот пример, показывающий, как должно вести себя изображение при перетаскивании по краям или углам: < /p>
этим изображением следует манипулировать динамически, как описано , с каждым краем или угловым перетаскиванием, в результате чего изображение простирается от этой конкретной точки. было бы очень оценено!
Я работаю над проектом Swiftui, где мне нужно динамически растянуть и изменить размер изображения, аналогичный тому, как изображения манипулируются в Photoshop. В частности, я хочу достичь следующих функций, с металлическими шейдерами, используемыми для эффектов рендеринга: [b], растягиваясь от краев: [/b] < ul> [*] Цель состоит в том, чтобы иметь возможность захватить и перетаскивать края или углы изображения (так же, как интерактивное изменение размера, вы видите в дизайнерских приложениях, таких как Photoshop). Когда края или углы перетаскивают, изображение должно растянуть и изменять его соотношение сторонна динамически. Слева, в правом верхнем, нижнем лево и правом нижнем) соответствующие части изображения должны растягиваться в режиме реального времени. < /li> Пример: если я возьму верхний правый угол Из изображения только верхний правый участок изображения должен растянуться, сохраняя при этом левую сторону нетронутой. То же самое относится и к каждому краю и углу.
[b] изменение размера с эффектами искажения: [/b] [list] [*] Я хочу исказить изображение по мере изменения размера, что означает, что соотношение сторон не должно быть сохранено при растяжении или изменении размера. Это обеспечивает полностью свободный эффект растяжения, в отличие от ограничения исходным соотношением сторон. независимо, создание растянутого или искаженного эффекта. [/list] [b] рендеринг в реальном времени: [/b]
Эффект растяжения должен быть применен плавно во время перетаскивания, не вызывая заметного мерцания или задержки. Он должен чувствовать себя отзывчивым и плавным, когда пользователь перемещает углы или ребра, аналогично взаимодействию в инструментах графического проектирования. < /li> < /ul> [b] металлический шейдер (обязательный): < /strong> < /p>
Я определенно буду использовать металл для пользовательского рендеринга для обработки динамического растяжения и искажения изображения. применяются с гладкостью и производительностью. < /li> < /ul> Ключевые проблемы: < /strong> < /p>
Swiftui В модификаторах storbizable (), scaledtofit () и scaledtofill () все обеспечивают ограничения при соотношении сторон, что не подходит для этого варианта использования, поскольку я хочу растянуть свободную форму без поддержания соотношения сторон. < /li> Способность перетаскивать и растягивать определенные части изображения (углы или края) в режиме реального времени имеет решающее значение, и Swiftui не имеет встроенной поддержки для этого. Плавные, преобразования в реальном времени являются ключевыми требованиями, которые необходимо реализовать жидкостью и эффективно, и именно здесь металлические шейдеры будут необходимы. < /li> < /ul> Что я попробовал: < /strong> < /p>
Я экспериментировал с модификатором Swiftui Resizeable (), но он недостаточно гибкий для этого использования Случай, поскольку он обеспечивает соблюдение ограничений соотношения сторон. к динамично преобразованию изображения таким образом, чтобы также обрабатывать искажения. Для этой цели. < /li> < /ul> желаемый результат: < /strong> < /p>
Изображение должно быть в состоянии свободно растягиваться и искажаться при перетаскивании любого угла или края, не сохраняя отношение сторон. < /li> Металлические шейдеры должны использоваться для пользовательских эффектов рендеринга изображения, чтобы достичь плавного растяжения и искажения в реальном времени. < /li> < /ul> Пример изображения < /strong> (иллюстрация желаемого результата): Чтобы проиллюстрировать, вот пример, показывающий, как должно вести себя изображение при перетаскивании по краям или углам: < /p>
этим изображением следует манипулировать динамически, как описано , с каждым краем или угловым перетаскиванием, в результате чего изображение простирается от этой конкретной точки. было бы очень оценено! [/b]