Рисование на Canvas в Lazarus
- |
- Post By : sergey
- |
- Опубликовано : 13 марта 2025

На панели инструментов Lazarus есть достаточно много компонентов, которые мы можем использовать при разработке интерфейса. И каждый из элементов интерфейса имеет предопределенное отображение, которое в некоторых случаях можно настраивать.
Но кроме этого в Lazarus существует возможность создавать свои рисунки на холсте, который на техническом языке называется Canvas. Смотрите подробный видеоурок о рисовании в Lazarus
Финальный код метода, который рисует домик
procedure TForm1.btPaintClick(Sender: TObject);
var
stena1,stena2,krisha1,krisha2,dver: array of TPoint;
koef, btm:integer;
begin
koef := 50;
btm := pb.Height;
SetLength(stena1,4);
SetLength(stena2,4);
SetLength(krisha1,3);
SetLength(krisha2,4);
SetLength(dver,4);
stena1[0]:=TPoint.Create(2*koef,btm - 6*koef);
stena1[1]:=TPoint.Create(6*koef,btm - 6*koef);
stena1[2]:=TPoint.Create(6*koef,btm - 2*koef);
stena1[3]:=TPoint.Create(2*koef,btm - 2*koef);
stena2[0]:=TPoint.Create(6*koef,btm - 6*koef);
stena2[1]:=TPoint.Create(11*koef,btm - 7*koef);
stena2[2]:=TPoint.Create(11*koef,btm - 4*koef);
stena2[3]:=TPoint.Create(6*koef,btm - 2*koef);
krisha1[0]:=TPoint.Create(2*koef,btm - 6*koef);
krisha1[1]:=TPoint.Create(6*koef,btm - 6*koef);
krisha1[2]:=TPoint.Create(4*koef,btm - 9*koef);
krisha2[0]:=TPoint.Create(6*koef,btm - 6*koef);
krisha2[1]:=TPoint.Create(11*koef,btm - 7*koef);
krisha2[2]:=TPoint.Create(9*koef,btm - 9*koef);
krisha2[3]:=TPoint.Create(4*koef,btm - 9*koef);
dver[0]:=TPoint.Create(3*koef,btm - 2*koef);
dver[1]:=TPoint.Create(3*koef,btm - 4*koef);
dver[2]:=TPoint.Create(5*koef,btm - 4*koef);
dver[3]:=TPoint.Create(5*koef,btm - 2*koef);
pb.Canvas.Brush.Color:=clRed;
pb.Canvas.Pen.Color:=clBlue;
pb.Canvas.Pen.Width:=2;
pb.Canvas.Brush.Color:= $004b96;
pb.Canvas.Polygon(stena1);
pb.Canvas.Polygon(stena2);
pb.Canvas.Brush.Color:= clGreen;
pb.Canvas.Polygon(krisha1);
pb.Canvas.Polygon(krisha2);
pb.Canvas.Brush.Color:= clGray;
pb.Canvas.Polygon(dver);
end;