Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОА Delphi формата А4.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
1.58 Mб
Скачать
  1. Создание приложения графический редактор – рисование от руки.

Цель занятия: Научится работать с графическими компонентами Delphi.

Задание1: Проектирование интерфейса приложения.

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

Поместить на форму компонент TOOLBAR1. Добавление кнопок в области компонента происходит при нажатии правой кнопки мыши на компоненте. Добавьте 4 кнопки.

Данные кнопки надо сгруппировать следующим образом:

  • выделить их (удерживая Shift);

  • свойству Grouped присвоить значение True;

  • свойству Style присвоить значение tbsCheck;

  • для первой кнопки изменить свойство Down на True.

Для создания холста (объекта на котором рисуется рисунок) перед словом end. (в конце модуля) добавьте следующий программный код:

Initialization

Holst := TBitmap.Create;

finalization

Holst.free;

На событие создания формы напишите программу: //холст растягивается по всей форме

procedure TForm1.FormCreate(Sender: TObject);

begin

with Image1.Canvas do

begin

Holst.Width := Width;

Holst.Height := Height;

end;

Image1.Picture.Graphic := Holst;

end;

В разделе описания типов опишите перечисляемый тип для того, чтобы затем производить выбор соответствующей опции рисования.

Type TChangeGraphic = (cgPen, cgLine, cgRectangle, cgEllipse);

В разделе описания переменных опишите объект, который отвечает за выбор фигуры:

Figura : TChangeGraphic;

Для каждой кнопки выбрать соответствующую опцию, например, для рисования «от руки» пишется программный код:

procedure TFormHolst.ToolButton1Click(Sender: TObject);

begin

Figura := cgPen;

end;

Остальные 3 кнопки аналогично: для рисования линии, прямоугольника и эллипса.

Для рисования выбранной фигуры напишите процедуру на событие нажатия кнопки мыши на компоненте Image1.

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

NachPoint := Point(X, Y);

KonPoint := Point(X, Y);

draw := true;

Image1.Canvas.MoveTo (X, y);

KonPoint := Point(X, Y);

NachPoint := KonPoint;

end;

В разделе описания переменных опишите используемые в процедуре переменные: NachPoint, KonPoint: TPoint; draw:boolean;

Для события изменения координат мыши напишите программный код:

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

Var NachPoint_Move, KonPoint_Move : tPoint;

begin if Draw then begin

with Image1.Canvas do

begin

case Figura of

cgPen : begin

LineTo(X, Y);

end;

cgLine : begin

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

MoveTo(NachPoint_Move.x, NachPoint_Move.Y);

KonPoint_Move := KonPoint;

LineTo(KonPoint_Move.x, KonPoint_Move.Y);

KonPoint := Point(X, Y);

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

MoveTo(NachPoint_Move.x, NachPoint_Move.Y);

KonPoint_Move := KonPoint;

LineTo(KonPoint_Move.x, KonPoint_Move.Y);

end;

cgRectangle: begin

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

KonPoint_Move := KonPoint;

KonPoint := Point(X, Y);

Rectangle(NachPoint_Move.X, NachPoint_Move.Y, KonPoint_Move.X, KonPoint_Move.Y);

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

KonPoint_Move := KonPoint;

Rectangle(NachPoint_Move.X, NachPoint_Move.Y, KonPoint_Move.X, KonPoint_Move.Y);

end;

cgEllipse: begin

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

KonPoint_Move := KonPoint;

KonPoint := Point(X, Y);

Ellipse(NachPoint_Move.X, NachPoint_Move.Y, KonPoint_Move.X, KonPoint_Move.Y);

Pen.Mode := pmNotXor;

NachPoint_Move := NachPoint;

KonPoint_Move := KonPoint;

Ellipse(NachPoint_Move.X, NachPoint_Move.Y, KonPoint_Move.X, KonPoint_Move.Y);

end; end; end; end; end;

Для события отпущения клавиши мыши написать программу:

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Draw then Draw := false;

end;

Задание2: Создание меню приложения.

Создайте меню интерфейс графического редактора по вашему усмотрению, который должен содержать:

  1. Основное меню программы, содержащее пункты: File, Edit, Format, Help.

  • Меню File содержит команды для создания, открытия, сохранения файла и закрытия программы;

  • Меню Edit – содержит команды для вырезки, копирования и вставки.

  • Меню Format содержит команды шрифта текста, цвета линии и заливки.

  • Меню Help содержит информацию об авторе создания программы.

  1. Компоненты для выбора различных стилей закраски, стилей границ, установки размера пера, ввода текста, установки заливки.

  2. Программный код:

  • Для события создания файла напишите программу очистки содержимого холста;

  • Для открытия и сохранения файла, для этого добавьте на форму нужные компоненты со страницы Dialogs;

  • Для копирования содержимого напишите программу:

procedure TFormHolst.Copy1Click(Sender: TObject);

begin

Clipboard.Assign(Image1.Picture);

end;

В раздел USES добавьте модуль Clipbrd.

  • Для вставки содержимого напишите программу:

procedure TFormHolst.Paste1Click(Sender: TObject);

var

Bitmap: TBitmap;

begin