Serg Sib
-
Постов
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные 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.
-
Slym, спасибо за ответ!
Я, после написнаия своего вопроса, еще немного помыслил и в итоге:if ((ssCtrl in Shift)and (Key = vkRight)) then PerspEffect1.TopRight := TPointF.Create(PerspEffect1.TopRight.X + 5, PerspEffect1.TopRight.Y);
По горячим клавишам можно растягивать TImage, как нужно.
-
RAD 10.2.3 Delphi
Эффект TPerspectiveTransformEffect применен к TImage.
Как во время выполнения приложения менять свойства этого эффекта, чтобы TImage видоизменялся?
Например, по нажатию горячих клавиш.
При попытке сделать
PerspEffect1.TopLeft.X := PerspEffect1.TopLeft.X + 5;
Получаю ошибку вида "E2064 Left side cannot be assigned to". Понимаю, что нужна другая конструкция, но не могу сообразить, какая.
В официальной документации к компоненту примеров кода не нашел, только одна строчка, которая мне непонятна:
property BottomLeft: TPointF read GetBottomLeft write SetBottomLeft;
Трансформация TImage по опорным точкам.
в Изображения
Опубликовано
Да, этот эффект - TPerspectiveTransformEffect я и использовал, когда сделал первый вариант приложения.
Но у этого способа есть некоторые недостатки:
1) Применяется этот эффект немного своеобразно - нужно приловчиться, прежде чем научиться подстраивать Image под нужные границы (приложение используется в качестве мэппинга на многопроекторных системах).
2) Есть ограничение на применение количества фильтров к одному визуальному элементу оформления. А хотелось бы, чтобы еще были какие-то переходы между изображениями, когда они меняются на экране. То есть это можно сделать, наверное, но уже с усложнением кода и добавлением каких-то вспомогательных объектов.