
- •Графические возможности Lazarus
- •Свойство canvas — это объект
- •Карандаш и кисть
- •Карандаш
- •Значение свойства Color определяет цвет линии
- •Значение свойства Реn.Style определяет вид линии
- •Значение свойства Реп. Mode влияет на цвет линии
- •Кисть
- •Значения свойства Brush.Style определяют тип
- •Пример стилей заполнения областей,
- •Рисовать на поверхности формы можно процедурой TForm1.FormPaint
- •Вывод текста
- •Свойства объекта TFont
- •Область вывода текста закрашивается текущим цветом кисти. Поэтому перед выводом текста свойству Brush.Color
- •Следующий фрагмент программы демонстрирует использование функции Textout для вывода текста на поверхность формы:
- •Методы вычерчивания графических примитивов
- •Точка
- •Линия
- •Прямоугольник
- •Прямоугольник со скругленными углами
- •Окружность и эллипс
- •Дуга
- •Сектор
- •Нормальный
- •Begin
- •with paintbox1.canvas do begin

Прямоугольник со скругленными углами
Метод RoundRec тоже вычерчивает прямоугольник, но со скругленными углами.
Объект.Canvas.RoundRec(x1,y1,х2, у2, х3, у3)
где:
x1, y1, х2, у2 -- параметры, определяющие положение углов прямоугольника, в который вписывается прямоугольник со скругленными углами; х3 и у3 — размер эллипса, одна четверть которого
используется для вычерчивания скругленного угла.

Окружность и эллипс
Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция вызова метода в общем виде выглядит следующим образом:
Объект.Canvas.Ellipse(x1,y1, х2,у2);
где:
объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность

Дуга
Вычерчивание дуги выполняет метод Arc:
Объект.Canvas.Arc(x1,y1,х2,у2,х3,у3,х4,у4), где:
x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 — параметры, определяющие начальную точку дуги; х4, у4 — параметры, определяющие конечную точку дуги. Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами (х3,у3) и (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной

Сектор
Метод Pie вычерчивает сектор эллипса или круга.
Объект. Canvas.Pie(x1,y1,x2,y2,х3,у3,х4,у4) где:
x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является сектор; х3, у3, х4, у4 — параметры, определяющие координаты конечных
точек прямых, являющихся границами сектора.
Начальные точки прямых совпадают с центром эллипса (окружности). Сектор вырезается против часовой стрелки от прямой, заданной точкой с координатами (х3, у3), к прямой, заданной точкой с координатами (х4,
у4)
Нормальный
график

{$R *.dfm} const n=10000;
type realtype=extended;
procedure TForm1.Button2Click(Sender: TObject); begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject); var a,b,step,min,max:realtype;
I ,w,h:integer;
x,y:array[0..n] of realtype; //x,y:array of real;
function fun(x:realtype):realtype; begin
if x<>0 then fun:=sin(x)/x else fun:=1; end;
Begin
a:=StrToFloat(edit1.Text);
b:=StrToFloat(edit2.Text);; step:=(b-a)/n; y[0]:=fun(a); min:=y[0];max:=y[0];
w:=paintbox1.Width;
h:=paintbox1.Height;
for i:=0 to n do
begin x[i]:=a+i*step; y[i]:=fun(x[i]);
if y[i]<min then min:=y[i];if y[i]>max then max:=y[i];
end;
with paintbox1.canvas do begin
FillRect(Rect(0,0,Width,Height)); Pen.Style:=psDot; Pen.width:=1;
moveto(1,1);lineto(w-1,1); //рамка lineto(w-1,h-1);lineto(1,h-1);lineto(1,1);
for i:=0 to n do pixels[round(W*(x[i]-a)/(b-a)),H-5-round((H-10)*(y[i]-min)/ (max-min))]:=clred;
end; end;
procedure TForm1.FormCreate(Sender: TObject); begin
edit1.Text:='-50';edit2.Text:='50'; end;
end.