Читайте также:
|
|
Метод CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect) позволяет скопировать прямоугольную областьс размерами, определяемыми параметром Source, с исходного холста, заданного параметром Canvas, в прямоугольную область Dest поверхности рисования. При этом копируемое изображение масштабируется в соответствии с размерами области Dest.
Следует упомянуть о событиях OnChanging и OnChange. Эти события возникают в случае изменения содержимого поверхности рисования, то есть при использовании любых методов, связанных с рисованием или выводом текста на поверхность рисования. Событие OnChanging возникает перед модификацией холста, а событие OnChange - после модификации. Обработчики этих событий программируются вручную, так как объект Canvas не доступен на этапе проектирования.
В качестве примера использования графических возможностей Delphi приводится программа рисования кораблика непосредственно на форме.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Types;
type
TForm1 = class(TForm)
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormResize(Sender: TObject);
var
maxw, maxh, w, h: integer;
rect: TRect;
begin
Form1.Refresh;
maxw:= Form1.ClientWidth;
maxh:= Form1.ClientHeight;
w:= maxw div 10;
h:= maxh div 10;
with Form1.Canvas do
begin
// Море
Brush.Color:= clBlue;
Brush.Style:= bsSolid;
Pen.Color:= clBlue;
Pen.Width:= 1;
Rectangle(0, maxh-h, maxw, maxh);
// Корабль
// Корпус корабля
Brush.Color:= clWhite;
Pen.Color:= clBlack;
Polygon([
Point(2*w, maxh-3*h),
Point(8*w, maxh-3*h),
Point(7*w, maxh-h),
Point(2*w, maxh-h)
]);
Rectangle(Round(3.5*w), maxh-5*h, 6*w, maxh-3*h);
// Иллюминаторы
Brush.Color:= clYellow;
Ellipse(
Round(3.9*w), maxh-4*h-Round(0.3*w), Round(4.5*w), maxh-4*h+Round(0.3*w));
Ellipse(5*w, maxh-4*h-Round(0.3*w), Round(5.6*w), maxh-4*h+Round(0.3*w));
// Труба
Brush.Color:=clBlack;
Rectangle(Round(4.5*w), maxh - 8*h, 5*w, maxh-5*h);
// Полоса на борту
Pen.Color:=clRed;
MoveTo(2*w, maxh - 2*h);
LineTo(Round(7.5*w), maxh - 2*h);
// Полосы на трубе
Pen.Width:=2;
MoveTo(Round(4.5*w), maxh-Round(7.5*h));
LineTo(Round(5*w), maxh-Round(7.5*h));
MoveTo(Round(4.5*w), maxh-7*h);
LineTo(Round(5*w), maxh-7*h);
// Надпись на борту
Font.Height:= Round(0.5*h);
Font.Style:= [fsBold];
Font.Color:= clGreen;
rect.Left:= 7*w-TextWidth('ВАРЯГ ');
rect.Top:= maxh-Round(2.75*h);
rect.Right:= 7*w;
rect.Bottom:= maxh-Round(2.25*h);
Brush.Color:= clWhite;
TextRect(rect, 7*w-TextWidth('ВАРЯГ '), maxh-Round(2.75*h), 'ВАРЯГ');
end; // конец оператора with
end; // конец процедуры procedure TForm1.FormResize
end. // конец модуля Unit1
Дата добавления: 2015-07-11; просмотров: 70 | Нарушение авторских прав