Робота з графікою, прозорі картинки, Графіка в Delphi, Статті, Програмування -
Ми продовжуємо вивчення програмування графіки на Delphi. Сьогодні у нас буде маленький приклад, але дуже далеко. Прозорість картинки дуже часто обговорюється на різних конференціях, тому вирішив пояснити цю проблему всім.
Тепер натисніть на форму і створи для неї обробник подіїOnPaint. Ця подія відповідає за промальовування екрану, і викликається щоразу, коли вікно потребує промальовування. Згадай приклад з минулого номера, в якому ми малювали текст, що повертається, програма працює чудово, але як тільки ми згорнемо її і відновимо заново, все зникне. Ми повинні самі відновлювати вміст екрана, і робити це треба саме в обробнику OnPaint. Тому цей приклад ми зробимо за всіма правилами.
У створеній процедуріFormPaintнапиши наступне:
Тепер можеш запустити програму та подивитися результат. Не погано? Давай розглянемо, що ж ми писали, щоб досягти цього.
Canvas.Brush.Color:=Color;Як ти вже знаєш, Canvas відповідає за те, що буде намальовано у вікні. Тому, щоби щось намалювати прямо на формі, ми малюємо це тут. Він має властивість Brush, в якому зберігаються параметри пензля, що використовується при зафарбовуванні. Ми змінюємо лише один параметр у цього пензля – колір, якому ми присвоюємо колір форми. Погляньмо на цей запис ось так:Область_малювання_форми.Пензель.Колір:=Колір_форми.
Тепер перейдемо до другого рядка. Вона здається трохи складною, але це лише на перший погляд. Тому розглянемо все частинами. М використовуємо процедуруBrushCopyу вже знайомогоCanvas. Ця процедура копіює на Canvas картинку.
Область приймача оголошена як TRect, що має виглядTRect = (Left, Top, Right,Bottom: Integer);. Що перебувати у дужках, я думаю пояснювати не треба. Те саме і з областю джерела. Як картинка ми передаємоBitmapзTImage. Прозорий колір буде замінюватися на колір пензля, який ми задали у першому рядку.