Предлагаю рассмотреть добавление трансформации (поворот, масштаб, сдвиг и т.п.) к элементам графики. Не уверен что выбранный мною способ создания элементов самый оптимальный, но пробовал различные варианты (менеджеры, по событию) и остановился на этом варианте, как самом понятном для пользователя. В
Share.pas внесены изменения по совету
Netspirit. Так же пришлось дополнить элементы графики для работы с элементами трансформации. Изменения внесены и в
Img_Draw.pas.
Сразу хочу предупредить: совместимость не пострадает. Спасибо Netspirit за тестирование и внесение изменений.
5 элементов "садятся" на нужный элемент для создания нужной трансформации. К примеру чтоб повернуть текст на 90 градусов достаточно подключить
Img_UseRotate (поворот) с заданной величиной:
А если необходимо еще увеличить и сделать сдвиг, подключаются еще
Img_UseScale (масштаб) и
Img_UseSkew (скос):
Так же работают и элементы
Img_UseOffset (Смещение),
Img_UseFlip (Отражение). У всех них есть своя верхняя точка для комбинирования трансформации.
6-ой элемент
Img_UseTransform (Трансформация) работает по тому же принципу что и предыдущие и задает произвольную трансформацию по шести параметрам (eM11,eM12,eM21,eM22,eDx,eDy). Отличие элемента от предыдущих в отсутствии комбинировании трансформации:
7-ой элемент
Img_SetTransform (Установка трансформации) предназначен для применения трансформации (предыдущих 6 элементов) не к одному элементу, а к заданной области:
Вот так можно создать крутящуюся загрузку:
Скриншот примера из архива, в котором трансформация применяется для всех элементов графики:
В архив также добавлены элементы: 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.