Вверх ↑
Ответов: 2236
Рейтинг: 676
#1: 2014-04-29 22:57:51 ЛС | профиль | цитата
Предлагаю рассмотреть добавление трансформации (поворот, масштаб, сдвиг и т.п.) к элементам графики. Не уверен что выбранный мною способ создания элементов самый оптимальный, но пробовал различные варианты (менеджеры, по событию) и остановился на этом варианте, как самом понятном для пользователя. В Share.pas внесены изменения по совету Netspirit. Так же пришлось дополнить элементы графики для работы с элементами трансформации. Изменения внесены и в Img_Draw.pas.
Сразу хочу предупредить: совместимость не пострадает.

         Спасибо Netspirit за тестирование и внесение изменений.

5 элементов "садятся" на нужный элемент для создания нужной трансформации. К примеру чтоб повернуть текст на 90 градусов достаточно подключить Img_UseRotate (поворот) с заданной величиной:
transform_01.jpg
А если необходимо еще увеличить и сделать сдвиг, подключаются еще Img_UseScale (масштаб) и Img_UseSkew (скос):
transform_02.jpg
Так же работают и элементы Img_UseOffset (Смещение), Img_UseFlip (Отражение). У всех них есть своя верхняя точка для комбинирования трансформации.
6-ой элемент Img_UseTransform (Трансформация) работает по тому же принципу что и предыдущие и задает произвольную трансформацию по шести параметрам (eM11,eM12,eM21,eM22,eDx,eDy). Отличие элемента от предыдущих в отсутствии комбинировании трансформации:
transform_03.jpg
7-ой элемент Img_SetTransform (Установка трансформации) предназначен для применения трансформации (предыдущих 6 элементов) не к одному элементу, а к заданной области:
transform_04.jpg

Вот так можно создать крутящуюся загрузку:
transform_05.jpg
Скриншот примера из архива, в котором трансформация применяется для всех элементов графики:
Все элементы

В архив также добавлены элементы:
  • Img_Edge и Img_TextInRect (с внесенными изменениями для трансформации).
  • Img_FloodFill (только pas с изменениями для устранения ошибки заливки штриховой кисти на Contex)
    Для тестирования:
    1. Скачать архив: transform_2014_05_10.zip
    2. Из папки new установить элементы (перетащить ini файлы на рабочее поле HiAsm). Элементы устанавливаются в вкладку Графика.
    3. Заменить элементы из папки change. Файлы pas в папку Elementsdelphicode, а файлы ini в папку Elementsdelphiconf. Желательно оригиналы предварительно скопировать в отдельную папку, для возможности восстановления.
    4. Смотреть примеры из папки test.  
  • карма: 11

    12
    файлы: 7transform_01.jpg [13.5KB] [1510], transform_02.jpg [17.7KB] [1477], transform_03.jpg [19.7KB] [1493], transform_04.jpg [64KB] [1527], transform_05.jpg [24.8KB] [1457], transform_10.jpg [62.4KB] [1238], transform_2014_05_10.zip [84.7KB] [425]
    Голосовали:Galkov, nesco, Tad, halt, miver, Netspirit, kamakama, flint2, foksov, Assasin, MAV, Konst
    Редактировалось 1 раз(а), последний 2017-05-30 19:56:34