- •Пример 1. Применение стандартных кнопок, меток и полей редактирования
- •Пример 2. Диалоговые окна
- •Пример 1. Радиокнопки
- •Текст файла Unit1.Pas
- •Пример 2. Использование компонента CheckBox
- •Текст файла Unit1.Pas
- •Пример 3. Калькулятор
- •Пример 1. Строка состояния
- •Пример 2. Системные диалоги. Загрузка текстового файла
- •Пример 3. Системные диалоги. Изменение параметров шрифта
- •Способ 2
- •Пример 2. Геометрические фигуры. Типы заливок
- •Пример 3. Построение графика функции на канве. Преобразование координат
- •Пример 1. Загрузка графических изображений
- •Пример 2. Компонент Timer
Способ 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, если эту строчку исключить из кода программы, то линия будет чёрной.
При запуске приложение будет выглядеть следующим образом:
Пример 2. Геометрические фигуры. Типы заливок
В данном примере представлено приложение, демонстрирующее построение на канве различных геометрических фигур с применением к ним заливок, а также отображение текста на канве.
Вид приложения во время его выполнения:
Текст файла Unit1.pas
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm} |
Для рисования фигур используем процедуруTForm1.FormPaint:
procedure TForm1.FormPaint(Sender: TObject); begin Color:=clInfoBk; // устанавливаем цвет фона светло-жёлтым |
Для каждой фигуры отдельно устанавливаются свойства "Кисть" и "Карандаш".
В данном фрагменте приводится метод для прорисовки многоугольника, причем количество вершин многоугольника определяется количеством точек в множестве Points
Canvas.Brush.Style:=bsSolid; Canvas.Pen.Color:=clBlue; Canvas.Brush.Color:=clYellow;
Canvas.Polygon([Point(40, 20), Point(48, 40), Point(70, 40), Point(52, 52),Point(60, 75), Point(40, 60), Point(20, 75), Point(28, 52), Point(10, 40),Point(32, 40)]);
Canvas.Brush.Color:=clInfoBk; Canvas.TextOut( 90, 50,'Polygon' ); |
Аналогичным образом прорисовываются остальные фигуры:
Canvas.Brush.Style:=bsCross; Canvas.Pen.Color:= clTeal; Canvas.Brush.Color := clRed; Canvas.Ellipse(10, 95, 65, 150); // эллипс
Canvas.TextOut( 90, 115,'Ellipse' );
Canvas.Pen.Color := clPurple; Canvas.MoveTo( 180, 20 ); Canvas.LineTo( 200, 40 ); Canvas.LineTo( 180, 60 ); Canvas.LineTo( 240, 60 ); Canvas.LineTo( 240, 75 );
Canvas.TextOut( 260, 50,'LineTo' );
Canvas.Pen.Color := clMaroon; Canvas.Brush.Color := clLime; Canvas.Brush.Style:=bsFDiagonal; Canvas.Rectangle(10, 170, 65, 225); // прямоугольник
Canvas.TextOut( 90, 185,'Rectangle' );
Canvas.Pen.Color := clTeal; Canvas.Brush.Color := clBtnFace; Canvas.Brush.Style:=bsDiagCross; Canvas.RoundRect(180, 95, 240, 150,20,20);
Canvas.TextOut( 260, 115,'RoundRect' );
Canvas.Brush.Style:=bsSolid; Canvas.Pen.Color:=clBlue; Canvas.Brush.Color:=clAqua; Canvas.Polygon([Point(180, 210), Point(230, 170), Point(240, 225)]); {многоугольник, в данном случае - треугольник}
Canvas.Brush.Color:=clInfoBk; Canvas.TextOut( 260, 185,'Polygon' ); end;
end. |
