Вопросы и упражнения.


Взаимосвязи графических классов

Для правильного выбора классов графики рассмотрим их назначение.

TCanvas. Этот класс обеспечивает среду, в которой можно чертить и рисовать изображение, вызывая его методы и меняя его свойства. Нет необходимости создания отдельного объекта Tcanvas, так как можно лдишь использовать свойство Canvas других объектов, например image1.Canvas

TGraphic. Этот класс является базовым классом для классов TBitmap, Ticon, Tmetafile. Любому свойству, переменной или параметру типа Tgraphic можно в качестве объекта присвоить растровое изображение, пиктограмму или метафайл. КлассTgraphic служит также абстрактным базовым классом для всех типов графических изображений в Delphi, включая встроенные классы, например JPEG и классы других графических файлов других форматов.

TPicture. Этот класс является контейнером для объекта Tgraphic, который может быть растровым изображением, пиктограммой или метафайлом.

TGraphicsObject.Этот класс является базовым для классов Tfont, Tpen, Tbrush.

Нет необходимости создания собственнного класса TGraphicsObject.

TGraphicsControl.Этот класс компонента является базовым для графических компонентов TSpeedButton, TtabButton, Tshape, TpaintBox, Timage, Tbevel, TcustomLabel. Класс TgraphicsControl полезен при разработке визуальных элементов, которые не имеют собственного рабочего окна. Класс TgraphicsControl объявлен в модуле Controls.

Рассмотрим пример. Пусть требуется создать элементарный графический редактор, в котором можно выбрать цвети толщину линий, сохранить рисунок.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

BitBtn1: TBitBtn;

Button1: TButton;

Button2: TButton;

BitBtn2: TBitBtn;

ColorDialog1: TColorDialog;

Label1: TLabel;

UpDown1: TUpDown;

Label2: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure BitBtn2Click(Sender: TObject);

procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);

{код обработки щелчка мыши для кнопки с надписью “рисовать”}

begin

image1.Canvas.Pen.Style:=psSolid;

image1.Canvas.Pen.width:=4;

image1.Canvas.Pen.Color:=rgb(250,0,0);

image1.Canvas.Brush.Color:=rgb(200,0,0);

image1.Canvas.Brush.style:=bsSolid;

image1.Canvas.Brush.style:=bsSolid;

image1.Canvas.rectangle(100,20,200,70);

image1.Canvas.Arc(10,10,100,100,200,200,10,15);

image1.Canvas.MoveTo(120,30);

image1.Canvas.LineTo(100,170);

image1.Canvas.Pen.Color:=rgb(0,0,200);

image1.Canvas.Ellipse(100,200,150,50);

end;

procedure TForm1.Button1Click(Sender: TObject);

{код обработки щелчка мыши для кнопки с надписью “сохранить”}

begin

image1.Picture.SaveToFile('tt.bmp');

end;

procedure TForm1.Button2Click(Sender: TObject);

{код обработки щелчка мыши для кнопки с надписью “загрузить”}

begin

image1.Picture.LoadFromFile('tt.bmp');

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

{код обработки нажатия и перемещения мыши}

begin

if ssLeft in Shift then

{если нажата левая клавиша мыши”}

begin

image1.Canvas.moveto(x,y);

image1.Canvas.lineto(x-1,y-1);

end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

{код обработки щелчка мыши для кнопки с надписью “цвет”}

begin

colordialog1.Execute;

image1.Canvas.pen.Color:=colordialog1.color;

end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

{код выбора толщины линии}

begin

label1.Caption:=inttostr(updown1.Position);

image1.Canvas.pen.width:=updown1.Position;

end;

end.

Необходимо на форме установить Сolordialog1, Updown1 и все видимые на рисунке ниже кнопки.

Как видите, можно создать собственный графический редактор за считанные минуты.

Рис.45.

1. Создайте собственный графический редактор с выбором формата сохранения графических файлов.

2. Создайте собственные визуальные элементы Куб, Шар.

3. Изучите свойства класса TGraphicsControl.

4. Создайте среду для ввода математических тестов.

5. Создайте собственную форму с элементом Canvas.Форма округленной четырехугольной формы.