Примеры использования свойств и методов канвы
Пример 1.В качестве примера рассмотрим подпрограмму, которая рисует автомобиль (рис.4). Текст подпрограммы включен в процедуру обработки события OnClick, происходящего при щелчке мышью по форме Form1. Автоматически формируемое имя этой процедуры -TForm1.FormClick (см. листинг 1).
После заголовка процедуры в разделе определения констант описываются массивы координат точек для вычерчивания отдельных частей атомобиля процедурой POLYGON. Далее описана процедура FILLCOLOR, которая устанавливает цвет пера и цвет кисти.
{------------------------------------------------------------------------------------------------------}
{ Листинг 1. Подпрограмма для изображения автомобиля } {------------------------------------------------------------------------------------------------------}
procedure TForm1.FormClick(Sender: TObject);
const
{шасси автомобиля}
osn:array[1..6] of TPoint=((x:485;y:355),(x:605;y:355),
(x:605;y:375),(x:385;y:375),
(x:385;y:365),(x:485;y:365));
{кабина}
kab:array[1..6] of TPoint=((x:485;y:365),(x:485;y:305),
(x:455;y:305),(x:445;y:335),
(x:395;y:345),(x:395;y:365));
{окно 1}
ok1:array[1..4] of TPoint=((x:480;y:335),(x:467;y:335),
(x:467;y:308),(x:480;y:308));
{окно 2}
ok2:array[1..4] of TPoint=((x:463;y:335),(x:448;y:335),
(x:457;y:308),(x:463;y:308));
{ Процедура установки цвета пера и цвета кисти }
procedure fillcolor(a,b:LongWord);
begin (fillcolor}
with Form1.Canvas do
begin
Pen.Color := a;
Brush.Color:= b;
end;
end; (fillcolor}
begin {FormClick}
Form1.WindowState := wsMaximized;{Установить макс.размер окна приложе-}
with Form1.Canvas do {ния, чтобы рисунок был виден полностью}
begin
fillcolor(clBlack,clBlue); FillRect(Rect(0,0,639,400)); {небо}
fillcolor(clBlack,clGreen);FillRect(Rect(0,400,639,479)); {трава}
fillcolor(clYellow,clYellow);Ellipse(550,10,630,90); {солнце}
fillcolor(clWhite,clWhite); Ellipse(20,20,80,80); {облако}
Ellipse(50,0,150,100); Ellipse(110,10,190,90);
fillcolor(clMaroon,clMaroon);FillRect(Rect(495,325,625,355));{кузов}
fillcolor(clGray,clGray); PolyGon(osn); {шасси автомобиля}
fillcolor(clSilver,clSilver);PolyGon(kab); {кабина}
fillcolor(clTeal,clTeal); PolyGon(ok1); {окно1}
PolyGon(ok2); {окно2}
fillcolor(clBlack,clBlack);
Ellipse(400,350,450,400); Ellipse(540,350,590,400); {шины}
fillcolor(clSilver,clSilver);
Ellipse(415,365,435,385); Ellipse(555,365,575,385); {диски колес}
end;
end; {FormClick}
Рис.4. Результаты выполнения программы