Menu
Создание графического редактора в Delphi
Задание: Создайте приложение – свой собственный графический редактор.
1 этап:
С вкладки Additional поместите на форму компонент Image
С вкладки Standard – MainMenu
Заполните меню как показано на рисунке: выполните двойной щелчок по компоненте. В открывшемся диалоговом окне для каждого пункта меню напишите соответствующее название в свойстве Caption.

Создав меню, закройте диалоговое окно.
С вкладки Win32 возьмите компонент ToolBar
Задайте свойства для этого компонента:
AutoSize false
BorderWidth 3
И переместите этот компонент в левую часть проекта, изменив размеры. Этот компонент будет панелью инструментов для выбора объектов рисования.
Добавим четыре кнопки для компонента ToolBar, для этого в контекстном меню выберем команду NewButton. Для каждой кнопки зададим одинаковые размеры: выделим все кнопки и в инспекторе объектов зададим значения высоты и ширины равные 50.
Поместим на кнопки рисунок, для того чтобы знать какой инструмент для рисования брать.

Для этого поместим на форму компонент ImageList с вкладки Win32. Для начала, у компонента ImageList в инспекторе объектов установите значения высоты и ширины равные 50 (КАК И ДЛЯ КНОПОК). Двойным щелчком откройте ImageList и добавьте (Add...) готовые рисунки.
Сейчас эти рисунки свяжем с кнопками: У компонента ToolBar для свойства Images выберите значение ImageList1. Рисунок на кнопках появится.
С вкладки Samples возьмем компонент ColorGrid и задайте для него следующее свойство:
GridOrdering Go8*2
Для диалога с пользователем (для открытия и сохранения файлов) нужны еще два компонента SavePictureDialog и OpenPictureDialog, а так же ColorDialog с вкладки Dialogs.
Создадим в меню Свойства: пункт Палитра и Очистить.

2 этап: Содание программного кода.

При создании формы цвет рабочей области нашего графического редактора становится белым.
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Canvas.Brush.Color:=clWhite; {цвет заливки рабочей области - белый}
image1.Canvas.FillRect(ClientRect); {закрашивание в выбранный цвет}
end;

Создадим обработчики событий для меню Открыть и Сохранить.

procedure TForm1.N2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
image1.Picture.LoadFromFile(OpenDialog1.filename);
end;

procedure TForm1.N3Click(Sender: TObject);
begin
If SaveDialog1.Execute then
image.savetofile(SavePictureDialog1.fileName);
end;

Создадим обработчик события для меню очистить.
procedure TForm1.N6Click(Sender: TObject);
begin
image1.Canvas.Brush.Color:=clWhite;
image1.Canvas.FillRect(ClientRect);
pen1:=false;
brush1:=false;
end;

Создадим обработчик события для меню палитра
procedure TForm1.N5Click(Sender: TObject);
begin
If ColorDialog1.Execute then
cl:= ColorDialog1.color;
end;

Выбор цвета в палитре
procedure TForm1.ColorGrid1Click(Sender: TObject);
begin
cl:=ColorGrid1.ForegroundColor;
end;

Программирование инструментов для рисования.
Опишем четыре логические переменный, отвечающие за нажатие кнопок с инструментами, т.е. за выбор инструмента для рисования:
Pen1 – для выбора инструмента карандаш;
Brush1 - для выбора инструмента заливка;
Rect1 – для выбора инструмента прямоугольник;
Circl1 – для выбора инструмента окружность.
А так же вспомогательная переменная drag (тип boolean).

var
Form1: TForm1;
pen1, brush1, rect1, circl1: boolean;
cl:TColor;
drag:boolean;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if pen1 then
begin
image1.Canvas.Pen.Color:=cl;
drag:=true;
image1.Canvas.MoveTo(x,y);
end;
if brush1 then
begin
image1.Canvas.Brush.Color:=cl;
image1.Canvas.FillRect(ClientRect);
end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if drag then image1.Canvas.LineTo(x,y);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
drag:=false;
end;
Запустите приложение. 

Задание:
1. Создайте отдельную форму и подсоедините ее к проекту. Форма должна содержать информацию о программе.
2. Опишите кнопки рисования прямоугольника и окружности.
3. Для карандаша задайте параметр – толщина линии.
4. Придумайте и создайте новые инструменты для рисования.

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
pen1:=true;
Brush1:=false;
rect1:=false;
circl1:=false;
end;

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
pen1:=false;
Brush1:=true;
rect1:=false;
circl1:=false;
end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
pen1:=false;
Brush1:=false;
rect1:=true;
circl1:=false;
end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
pen1:=false;
Brush1:=false;
rect1:=false;
circl1:=true;
end;

18.05.2010 18:31 Информатика Артем 3737 7428 0
Имя *:
Email: