Створення у Delphi непрямокутної форми з картинкою
Іноді для отримання візуального ефекту хочеться у звичайну програму на Delphi додати Form, яка мала обриси, що збігаються з картинкою (довільної форми). Основна проблема у разі пов'язані з отриманням координат країв картинки, оскільки технологія завдання форми для Form добре відома. Для роботи знадобиться, крім Delphi, ще програма PhotoShop (реально будь-якої версії).
Зміст
Підготовка зображення.
Визначення межі картинки
Виберіть картинку та завантажте її у PhotoShop. Щоб отримати при запуску програми на екрані картинку неправильної форми (у PhotoShop вона все одно прямокутна) зручно "виділенням" окреслити смислову частину картинки після цього всі краї "залити", наприклад, білим кольором (якщо він не використовується в смисловій частині). Збережіть зображення у форматі BMP.
Отримання координат межі картинки
Для отримання координат меж картинки зручно скористатися можливостями PhotoShop. Для цього треба виконати лише дві операції:
- перетворити "виділення" смислової частини картинки на шлях,
- експортувати шлях до Illustrator.
У ньому явно видно координати в пікселях кордону смислової частини картинки. Координати йдуть парами X, Y. Вони фактично готові до підстановки в текст програми, а необхідні перетворення можна зробити вже у тексті програми.
Програмування у Delphi
Стандартна частина
Стандартна частина програмування передбачає виконання стандартних операцій:
- Створення Form'и для зображення.
- Розміщення на ній візуального елементу Timage
- Завантаження елемент типу Timage підготовленої картинки (типу BMP)
- Встановлення якості Timage Transparent в TRUE.
Завдання кордону Form'и
Для точного настроювання форми Form'и треба завантажити координати межі картинки з файлу типу ai в програму, наприклад, у вигляді масиву констант:
Налаштування форми Form'и
Налаштування форми Form'и пов'язане з необхідністю округлення до цілого значення та перерахування заданих координат у систему відліку Timage. У вихідних координат нуль розташований у лівій нижній частині картинки, а у Timage - у лівій верхній точці. Крім того, основна мета – задати форму Form'и, тому необхідно зробити перерахунок координат щодо лівої верхньої точки елемента типу TForm. Всі ці операції виконуються під час створення Form'и:
Формально це все щодо основної теми статті.
Розглянуто випадок однозв'язаного шляху. Варіант із кількома шляхами реалізується аналогічно з використанням методу CombineRgn.
Формально для краси роботи прикладу я в код додав ще