Перейти к содержанию
Fire Monkey от А до Я
  • 0

Трансформация TImage по опорным точкам.


Serg Sib

Вопрос

RAD 10.2.3 Delphi , Win 10x64 Pro 1803

Подскажите, с помощью чего можно осуществить трансформацию изображения по опорным точкам (по углам)?
Возможно, что не напрямую сам TImage, а при помощи работы с Canvas на его Bitmap.

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

var MyBrushBitmap: TBrushBitmap;

  Image1.Bitmap.Canvas.Fill.Kind := TBrushKind.Bitmap;
  Image1.Bitmap.Canvas.Fill.Bitmap := MyBrushBitmap;
  Image1.Bitmap.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;

  Image1.Bitmap.Canvas.FillPolygon(MyPolygon, 50);

Однако, изображение частично обрезается при этом.

В интернете поиском находил пример подобной трансформации на VCL, (перетаскиванием вершин мышью), но не смог приспособить этот пример для платформы FireMonkey.

Изменено пользователем Serg Sib
Не была указана ОС
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Посмотрите среди примеров FMX есть использование эффектов. Там был пример с искажением картинки.

2019-06-12_19-26-34.png

Ссылка на комментарий
  • 0

Да, этот эффект - TPerspectiveTransformEffect я и использовал, когда сделал первый вариант приложения.
Но у этого способа есть некоторые недостатки:
1) Применяется этот эффект немного своеобразно - нужно приловчиться, прежде чем научиться подстраивать Image под нужные границы (приложение используется в качестве мэппинга на многопроекторных системах).
2) Есть ограничение на применение количества фильтров к одному визуальному элементу оформления. А хотелось бы, чтобы еще были какие-то переходы между изображениями, когда они меняются на экране. То есть это можно сделать, наверное, но уже с усложнением кода и добавлением каких-то вспомогательных объектов.

Ссылка на комментарий
  • 0
  • Администраторы
48 минут назад, Serg Sib сказал:

Есть ограничение на применение количества фильтров к одному визуальному элементу оформления.

Что за ограничение? Можно же фильтр применять программно на TBitmap без использования компонента. TPerspectiveFilter.

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...