Рисование на Canvas в Lazarus — Lazarus. Студия разработки

Рисование на Canvas в Lazarus

  • |
  • Post By :
  • |
  • Опубликовано : 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;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*