Работа с графики, прозрачни картинки

Продължаваме да изучаваме графично програмиране в Delphi. Днес ще имаме малък пример, но много отдалечен. Прозрачността на картината много често се обсъжда на различни конференции, затова реших да обясня този проблем на всички.

Сега кликнете върху формуляра и създайте манипулатор на събития за него OnPaint . Това събитие отговаря за изчертаването на екрана и се извиква всеки път, когато прозорецът трябва да бъде нарисуван. Спомнете си примера от последния брой, в който нарисувахме въртящ се текст, програмата работи добре, но веднага щом я свием и възстановим отново, всичко изчезва. Трябва сами да възстановим съдържанието на екрана и това трябва да стане в манипулатора OnPaint . Затова ще направим този пример според всички правила.

В създадената процедура FormPaint напишете следното:

Сега можете да стартирате програмата и да видите резултата. Не е зле? Нека да разгледаме какво сме написали, за да постигнем това.

Canvas.Brush.Color: = Цвят; Както вече знаете, Canvas е отговорен за това, което ще бъде нарисувано на прозореца. Следователно, за да нарисуваме нещо директно върху формуляра, ние го рисуваме тук. Той има свойство Brush, което съхранява параметрите на четката, използвана при боядисване. Променяме само един параметър за тази четка - цвета, на който присвояваме цвета на формата. Нека разгледаме този запис така:
Shape_Drawing Area.Brush.Color: = Shape_Color.

Сега да преминем към втория ред. Изглежда малко сложно, но това е само на пръв поглед. Затова ще разгледаме всичко на части. Ние използваме процедурата BrushCopy от вече познат Платно . Тази процедура копира картина в Canvas.

Областта на приемника е декларирана като TRect, която има формата TRect = (вляво, отгоре, отдясно, отдолу: цяло число); . Какво е в скоби, мисля, че няма нужда да се обяснява. Същото е и с областта на източника. Като картина предаваме Растерно изображение на TImage . Прозрачният цвят ще бъде заменен с цвета на четката, който посочихме на първия ред.