Как вывести полупрозрачный текст

Материал из DRKB


Пример вывода полупрозрачного текста.

Image 2021-02-11 225635.png


Эффект достигается за счет режима Canvas.CopyMode := cmSrcPaint и функции Canvas.CopyRect(), при котором происходит логическое сложение (операция OR) значений цветов картинки-источника и картинки-приемника. Проще говоря, яркости цветов каждого пикселя складываются.


procedure TForm1.FormPaint(Sender: TObject);
var
  x, y: integer;
  bm: TBitMap;
begin
  Form1.ClientWidth := 200;
  Form1.ClientHeight := 100;
  Randomize;
  for x := 0 to 199 do
    for y := 0 to 99 do
      if 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 do
  begin
    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;


Author: Даниил Карапетян (delphi4all@narod.ru)
Author: Алексей Денисов (aleksey@sch103.krasnoyarsk.su)
ID: 03653