Здавалка
Главная | Обратная связь

Графический редактор

Задание: Создайте приложение – свой собственный графический редактор.

1 этап:

С вкладки Additional поместите на форму компонент Image

С вкладки Standard – MainMenu

Заполните меню как показано на рисунке: выполните двойной щелчок по компоненте. В открывшемся диалоговом окне для каждого пункта меню напишите соответствующее название в свойстве Caption.

Создав меню, закройте диалоговое окно.

С вкладки Win32 возьмите компонент ToolBar

Задайте свойства для этого компонента:

AutoSize false
BorderWidth

И переместите этот компонент в левую часть проекта, изменив размеры. Этот компонент будет панелью инструментов для выбора объектов рисования.

Добавим четыре кнопки для компонента 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;

Запустите приложение. t

 

 

Задание:

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;





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.