Растянуть и изменить размер изображения динамически в Swiftui с пользовательскими манипуляциями с краем/углом с использоIOS

Программируем под IOS
Ответить
Anonymous
 Растянуть и изменить размер изображения динамически в Swiftui с пользовательскими манипуляциями с краем/углом с использо

Сообщение Anonymous »

Я работаю над проектом 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>

этим изображением следует манипулировать динамически, как описано , с каждым краем или угловым перетаскиванием, в результате чего изображение простирается от этой конкретной точки. было бы очень оценено!


Подробнее здесь: https://stackoverflow.com/questions/794 ... rner-manip
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»