mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-19 07:29:25 +02:00
132 lines
2.7 KiB
ObjectPascal
132 lines
2.7 KiB
ObjectPascal
unit drawtest;
|
|
|
|
{$mode objfpc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Forms, Graphics;
|
|
|
|
type
|
|
|
|
{ TfrmDraw }
|
|
|
|
TfrmDraw = class(TForm)
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormPaint(Sender: TObject);
|
|
private
|
|
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
frmDraw: TfrmDraw;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TfrmDraw }
|
|
|
|
procedure TfrmDraw.FormPaint(Sender: TObject);
|
|
var
|
|
Bmp: TBitmap;
|
|
begin
|
|
Bmp := TBitmap.Create;
|
|
Bmp.Width := 50;
|
|
Bmp.Height := 50;
|
|
Bmp.Canvas.Brush.Color := clBlue;
|
|
Bmp.Canvas.Rectangle(0, 0, 50, 50);
|
|
Canvas.CopyMode := cmSrcCopy;
|
|
// BrushCopy
|
|
|
|
Canvas.TextOut(50, 30, 'CopyBrush simple');
|
|
Canvas.Brush.Color := clYellow;
|
|
Canvas.BrushCopy(Bounds(50, 50, 50, 50), Bmp, Bounds(0, 0, 50, 50), clBlue);
|
|
|
|
Canvas.TextOut(200, 30, 'CopyBrush stretch');
|
|
Canvas.Brush.Color := clYellow;
|
|
Canvas.BrushCopy(Bounds(200, 50, 20, 20), Bmp, Bounds(0, 0, 50, 50), clBlue);
|
|
|
|
Canvas.TextOut(350, 30, 'CopyBrush SrcRect');
|
|
Canvas.Brush.Color := clYellow;
|
|
Canvas.BrushCopy(Bounds(350, 50, 20, 20), Bmp, Bounds(30, 30, 20, 20), clBlue);
|
|
|
|
// CopyMode
|
|
|
|
Canvas.TextOut(50, 130, 'cmBlackness');
|
|
Canvas.CopyMode := cmBlackness;
|
|
Canvas.Draw(50, 150, Bmp);
|
|
|
|
Canvas.TextOut(150, 130, 'cmDstInvert');
|
|
Canvas.CopyMode := cmDstInvert;
|
|
Canvas.Draw(150, 150, Bmp);
|
|
|
|
Canvas.TextOut(250, 130, 'cmMergeCopy');
|
|
Canvas.CopyMode := cmMergeCopy;
|
|
Canvas.Draw(250, 150, Bmp);
|
|
|
|
Canvas.TextOut(350, 130, 'cmMergePaint');
|
|
Canvas.CopyMode := cmMergePaint;
|
|
Canvas.Draw(350, 150, Bmp);
|
|
|
|
Canvas.TextOut(450, 130, 'cmNotSrcCopy');
|
|
Canvas.CopyMode := cmNotSrcCopy;
|
|
Canvas.Draw(450, 150, Bmp);
|
|
|
|
// CopyMode line 2
|
|
|
|
Canvas.TextOut(50, 230, 'cmNotSrcErase');
|
|
Canvas.CopyMode := cmNotSrcErase;
|
|
Canvas.Draw(50, 250, Bmp);
|
|
|
|
Canvas.TextOut(150, 230, 'cmPatCopy');
|
|
Canvas.CopyMode := cmPatCopy;
|
|
Canvas.Draw(150, 250, Bmp);
|
|
|
|
Canvas.TextOut(250, 230, 'cmPatInvert');
|
|
Canvas.CopyMode := cmPatInvert;
|
|
Canvas.Draw(250, 250, Bmp);
|
|
|
|
Canvas.TextOut(350, 230, 'cmPatPaint');
|
|
Canvas.CopyMode := cmPatPaint;
|
|
Canvas.Draw(350, 250, Bmp);
|
|
|
|
Canvas.TextOut(450, 230, 'cmSrcAnd');
|
|
Canvas.CopyMode := cmSrcAnd;
|
|
Canvas.Draw(450, 250, Bmp);
|
|
|
|
// CopyMode line 3
|
|
|
|
Canvas.TextOut(50, 330, 'cmSrcCopy');
|
|
Canvas.CopyMode := cmSrcCopy;
|
|
Canvas.Draw(50, 350, Bmp);
|
|
|
|
Canvas.TextOut(150, 330, 'cmSrcErase');
|
|
Canvas.CopyMode := cmSrcErase;
|
|
Canvas.Draw(150, 350, Bmp);
|
|
|
|
Canvas.TextOut(250, 330, 'cmSrcInvert');
|
|
Canvas.CopyMode := cmSrcInvert;
|
|
Canvas.Draw(250, 350, Bmp);
|
|
|
|
Canvas.TextOut(350, 330, 'cmSrcPaint');
|
|
Canvas.CopyMode := cmSrcPaint;
|
|
Canvas.Draw(350, 350, Bmp);
|
|
|
|
Canvas.TextOut(450, 330, 'cmWhiteness');
|
|
Canvas.CopyMode := cmWhiteness;
|
|
Canvas.Draw(450, 350, Bmp);
|
|
|
|
Bmp.Free;
|
|
end;
|
|
|
|
procedure TfrmDraw.FormCreate(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
end.
|
|
|