3. Створення програмного коду для малювання фігур (ліній, секторів ламаних) у процесі виконання програми за їх координатами на координатній площині.
Для малювання ліній і фігур у процесі виконання програми на формі у середовищі програмування Lazarus потрібно розміщувати полотно. Для цього звертаються до властивості Canvas - властивості об'єкта form, який у свою чергу є об'єктом, що має свої методи та властивості:
- методи використовують для побудови на полотні різних фігур;
- властивості - щоб задавати колір лінії, іі товщину тощо.
|
Розмір полотна визначається значеннями властивостей Height - кількість точок по вертикалі та Width - по горизонталі.
Полотно складається з окремих точок - пікселів, координати яких задаються значеннями x та y. |
Як і в графічному редакторі, у середовищі Lazarus можна малювати олівцем та пензликом. Для цього використовують властивості полотна Pen та Brush:
form1.canvas.pen або form1.canvas.brush.
Малювати можна різні об'єкти. Для цього використовують відповідні методи полотна.
Можна задавати значення властивостей інструментів малювання:
- Колір, товщина та стиль цих об'єктів визначаються значеннями властивості pen:
|
form1.canvas.pen.color - колір;
form1.canvas.pen.width - ширина (ціле число);
form1.canvas.pen.style - стиль:
|
- Колір і стиль заливки замкнених фігур - значеннями властивості Brush:
Створюючи зображення, що складається з графічних примітивів, варто спочатку встановити значення властивостей контуру та внутрішньої області фігури, після чого відобразити саму фігуру, наприклад:
Вправа 4.
|
Программный код
procedure TForm1.Button1Click(Sender: TObject);
begin
Canvas.Pen.Color := clGreen; // цвет контура - зеленый
Canvas.Pen.Width := 3; // толщина контура - 3 пикселя
Canvas.Brush.Color := clRed; // цвет заливки - красный
Canvas.Brush.Style := bsDiagCross; (* стиль заливки —сетка с диагональными линиями*)
Canvas.Rectangle (10, 10, 350, 100); (* прямоугольник с противоположными вершинами в точках (10, 10) и (350, 100) и сторонами, параллельными осям координат *)
end;
|
Вправа 5а.
Интерфейс проекта
Программный код
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Canvas.Pen.Color:= clred; // значение свойства контура
form1.Canvas.Pen.width:= 4; // значение свойства контура
form1.Canvas.Pen.style:= pssolid; // значение свойства контура
form1.Canvas.moveTo(200,10);//установить перо в точку с координатами х=200, у = 10.
form1.Canvas.LineTo(400,400);// выполнить перемещение пера в точку с координатами х=400, у=400.
end;
|
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Canvas.Pen.Color:= clolive;// значение свойства контура
form1.Canvas.Pen.width:= 4; // значение свойства контура
form1.Canvas.Pen.style:= pssolid; // значение свойства контура
form1.Canvas.moveTo(500,300);
form1.Canvas.LineTo(40,480);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Canvas.Pen.Color:= clblue; // значение свойства контура
form1.Canvas.Pen.width:= 4; // значение свойства контура
form1.Canvas.Pen.style:= pssolid; // значение свойства контура
form1.Canvas.brush.Color:= clolive; { значение свойства внутренней области фигуры}
form1.Canvas.Rectangle(20,20,300,300);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
form1.Canvas.Pen.Color:= clblue; // значение свойства контура
form1.Canvas.Pen.width:= 4; // значение свойства контура
form1.Canvas.Pen.style:= pssolid; // значение свойства контура
form1.Canvas.brush.Color:= clnavy; { значение свойства внутренней области фигуры}
form1.canvas.Ellipse(250,150,450,50);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Height:=504;
form1.width:= 482;
end;
|
Вправа 5б. Використання операторa With в програмному коді.
Якщо ви працюєте з полями однієї і тієї ж записи, то цієї проблеми можна уникнути завдяки оператору приєднання WITH, приклад:
Программный код
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
with form1.Canvas do // оператор присоединения WITH
begin // запись команд рисования на полотне
Pen.Color:=clRed;
Pen.width:=3;
Pen.Style:=pssolid;
Line(10,10,60,70);
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
with form1.Canvas do // оператор присоединения WITH
begin
// прием стирания рисунка
brush.Color:=cldefault; FillRect(0,0,500,165);
end;
end;
|
procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
with form1.Canvas do // оператор присоединения WITH
begin
Pen.Color:=clgreen;
Pen.width:=3;
pen.Style:=pssolid;
Brush.Color:=clgreen;
Brush.Style:=bssolid;
ellipse(100,60,200,120);
end;
end;
procedure TForm1.Button3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
with form1.Canvas do // оператор присоединения WITH
begin
Pen.Color:=clblue;
Pen.width:=3;
pen.Style:=pssolid;
Brush.Color:=clblue;
Brush.Style:=bssolid;
rectangle(250,80,350,160);
end;
end;
|
продовження