Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вопросы и упражнения. Взаимосвязи графических классов

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

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

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.Форма округленной четырехугольной формы.

 

<== предыдущая лекция | следующая лекция ==>
Холст(Canvas). Графические примитивы | Переменные. Преобразование типов
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 472; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.