procedure TForm1.FormPaint(Sender: TObject);
var
x, y: integer;
bm: TBitMap;
begin
Form1.ClientWidth := 200;
Form1.ClientHeight := 100;
randomize;
for x := 0 to 199 dofor y := 0 to 99 doif random(3) = 1 then
Form1.Canvas.Pixels[x,y] := clGreen
else
Form1.Canvas.Pixels[x,y] := clLime;
bm := TBitMap.Create;
bm.Width := 200;
bm.Height := 100;
with bm.Canvas dobegin
Brush.Color := clGreen;
FillRect(ClipRect);
Font.name := 'Arial';
Font.Size := 50;
Font.Color := clGray;
Font.Style := [fsBold];
TextOut((bm.Width - TextWidth('Text')) div 2,
(bm.Height - TextHeight('Text')) div 2, 'Text');
end;
Form1.Canvas.CopyMode := cmSrcPaint;
Form1.Canvas.CopyRect(bm.Canvas.ClipRect, bm.Canvas,
bm.Canvas.ClipRect);
bm.Destroy;
end;
Вот перевод текста на русский язык:
Этот фрагмент кода Delphi рисует форму с полупрозрачным текстом на ней. Вот разбивка того, что код делает:
Процедура FormPaint вызывается при рисовании формы.
Она устанавливает клиентскую ширину и высоту формы в 200x100 пикселей соответственно.
Она случайно изменяет значение функции Randomize.
Она проходит по каждому пикселю на форме с помощью двух вложенных циклов for, где x варьируется от 0 до 199 и y - от 0 до 99.
Для каждого пикселя она проверяет, равен ли случайное число между 1 и 3 1. Если это так, она устанавливает цвет пикселя в зеленый (clGreen); иначе - в лимонный (clLime).
Она создает объект TBitMap с шириной 200 и высотой 100 пикселей.
Статус with задает различные свойства канваса битмапа:
Цвет кисти: зеленый (clGreen)
Заполнение прямоугольника: заполняет всю поверхность кистью
Шрифт: Arial, размер 50, серый (clGray), жирный (fsBold)
Вывод текста: пишет текст "Text" в центре поверхности
Она устанавливает режим копирования канваса формы в cmSrcPaint, что позволяет использовать битмап как кисть.
Она копирует поверхность канваса битмапа на поверхность канваса формы с помощью метода CopyRect.
Наконец, она уничтожает битмап.
Чтобы сделать текст полупрозрачным, вы можете изменить канал альфа текстового цвета или использовать эффект прозрачности на канвасе. Однако код не устанавливает альфа-значение явно. Вам может потребоваться добавить фактор прозрачности в свойства кисти или шрифта.
Вот альтернативное решение, использующее полупрозрачную кисть:
procedureTForm1.FormPaint(Sender:TObject);varx,y:integer;begin// ... (остальная часть кода остается той же)withbm.CanvasdobeginBrush.Opacity:=0.5;// Установка альфа-канала в 50%Font.Color:=clGray;// Оставьте цвет шрифта серымTextOut((bm.Width-TextWidth('Text'))div2,(bm.Height-TextHeight('Text'))div2,'Text');end;// ... (остальная часть кода остается той же)
В этом примере я установил.opacity кисти в 0.5 с помощью свойства Opacity. Это сделает текст полупрозрачным. Вы можете изменить значение для достижения желаемого уровня прозрачности.
В статье описывается процедура TForm1.FormPaint для вывода полупрозрачной текстовой строки на форме Delphi, используя битмап и методы Canvas.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.