Читайте также:
|
|
4.1. Проект «Простейший графический редактор»
Постановка задачи. Создать графический редактор, рисующий основные фигуры: прямоугольник, окружность, линию. Ввод координат осуществлять путем нажатия и отпускания кнопки мыши. Для рисования фигур использовать меню или (и) панель инструментов – компонент TToolBar. Реализовать выбор цвета для контура фигуры и для заливки. Обеспечить возможность открытия и сохранения
в графическом файле рисунка. При рисовании линии предусмотреть рисование мышью с отпусканием левой кнопки.
Реализация. Положите на форму:
· компонент Image 1, его графическое поле будет использоваться в качестве области рисования, а также сохраняться в файле;
· четыре надписи TLabel для вывода имен координат;
· четыре редактора TEdit для вывода значений координат;
· компонент TMainMenu для создания пунктов меню «Файл», «Графические примитивы», «Очистка поля», «Выбор цвета»;
· панель инструментов – компонент TToolBar для дублирования некоторых функций меню, или же вместо меню;
· коллекцию изображений ImageList 1 для хранения изображений, которые будут помещены на кнопки панели инструментов;
· диалог TColorDialog, позволяющий выбрать цвет с использованием диалогового окна;
· диалог TOpenPictureDialog, который позволяет открыть файл в диалоговом окне;
· диалог TSavePictureDialog, который позволяет через диалоговое окно сохранить файл.
На рис. 25 показана форма проекта, в которой компонент
TToolBar не используется.
Рис. 25. Форма проекта «Графический редактор»
Создадим программные коды обработчиков событий нажатия
и отпускания кнопки мыши на графическом поле Image 1.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
pr:=true;
xp:=x;
yp:=y;
x1:=x;
y1:=y;
Edit1.Text:=IntToStr(x1);
Edit2.Text:=IntToStr(y1);
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
pr:=false;
x2:=x;
y2:=y;
Edit3.Text:=IntToStr(x2);
Edit4.Text:=IntToStr(y2);
end;
На событие OnMouseMove программный код должен обеспечить рисование линии по удерживанию левой кнопки мыши.
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if pr then
with Image1.Canvas do
begin
Pen.Width:=w;
Pen.Color:=cl_ln;
MoveTo(xp,yp);
LineTo(x,y);
end;
xp:=x;
yp:=y;
end;
В диалоговом окне Form1.MainMenu1, открывающемся после двойного щелчка по компоненту MainMenu 1, создайте меню проекта (рис. 26).
Рис. 26. Редактор меню
Программный код обработчика события рисования закрашенного прямоугольника может быть таким:
procedure TForm1.N5Click(Sender: TObject);
begin {Закрашенный прямоугольник}
with Image1.Canvas do
begin
Brush.Color:=cl_zal;
Rectangle(x1,y1,x2,y2);
end;
end;
Аналогично создаются коды по другим пунктам меню. Для примера приведены программные коды опций меню «Очистка поля», «Выбор цвета» и «Сохранить файл».
procedure TForm1.N7Click(Sender: TObject);
begin {очистка области рисования }
with Image1.Canvas do
begin
pen.color:=Form1.Color;
brush.color:=Form1.Color;
rectangle(0,0,Image1.Width,Image1.Height);
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin // Сохранить файл
if SavePictureDialog1.Execute then
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TForm1.N13Click(Sender: TObject);
begin // Цвет контура
if colordialog1.Execute then
begin
cl_ln:=colordialog1.Color;
Image1.Canvas.Brush.Color:=cl_ln;
end;
end;
Аналогично пишется код для выбора цвета заливки области рисования.
Задание. Закончите этот проект. Нарисуйте что-нибудь и сохраните в файле. Положите панель инструментов – компонент TToolBar для дублирования некоторых опций меню, коллекцию изображений ImageList 1 для хранения изображений, которые будут помещены на кнопки панели инструментов, и напишите к кнопкам соответствующие обработчики.
Дата добавления: 2015-08-20; просмотров: 59 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Совмещение управляемого и неуправляемого движений. | | | Создание кнопок |