Пример 1. Рисование на канве

 

В данном примере представлено приложение, которое рисует по пикселям график синусоиды на канве формы.

Измените ширину и высоту формы будущего приложения примерно так, как это показано на рисунках ниже.

 

Способ 1

Для рисования будем использовать свойство канвы Pixels.

В окне Object Inspector на вкладке Events выберите событие OnPaint и сделайте двойной щелчок в строке напротив этого события. Перед вами появится окно редактора кода с заготовкой процедуры для обработки события OnPaint. Разместите следующий код в теле процедуры:

 

procedure TForm1.FormPaint(Sender: TObject);

 var

  X,Y: real;      //  координаты функции

  PX,PY: longint; /координаты пикселей

begin

 Color := clWhite;

 for PX := 0 to ClientWidth do

  begin

   {X – аргумент графика, соответствующий пикселю с координатой РХ}

   X := PX*4*Pi/ClientWidth;

   Y:=Sin(X);

   {PY – координата пикселя, соответствующая координате Y}

   PY:=trunc(ClientHeight - (Y+1)*ClientHeight/2);

   {Устанавливается черный цвет выбранного пикселя (0 яркости)}

   Canvas.Pixels [PX, PY] := 0;

  end;

end;

 

При запуске приложение будет выглядеть следующим образом:

 

 

График получился нечётким, разбитым на отдельные точки – пиксели.

 

Способ 2

Теперь воспользуемся для рисования свойствами канвы Pen и LineTo. Cвойство Pen в свою очередь также обладает рядом свойств, о чём говорилось ранее.

Процедура обработки события должна иметь вид:

 

procedure TForm1.FormPaint(Sender: TObject);

var

 X,Y: real;

 PX,PY: longint;

begin

 Color:=clWhite;

 Canvas.Pen.Color:=clRed;

 Canvas.MoveTo(0,ClientHeight div 2);

 for PX:=0 to ClientWidth do

  begin

   X := PX*4*Pi/ClientWidth;

   Y := Sin(X);

   PY := trunc(ClientHeight - (Y+1)*ClientHeight/2);

   Canvas.LineTo(PX,PY);

  end;

end;

 

В данной процедуре для вычерчивания линии красного цвета было задано следующее свойство: Canvas.Pen.Color:=clRed, если эту строчку исключить из кода программы, то линия будет чёрной.

 

При запуске приложение будет выглядеть следующим образом: