Графический редактор
Задание: Создайте приложение – свой собственный графический редактор. 1 этап: С вкладки Additional поместите на форму компонент Image С вкладки Standard – MainMenu Заполните меню как показано на рисунке: выполните двойной щелчок по компоненте. В открывшемся диалоговом окне для каждого пункта меню напишите соответствующее название в свойстве Caption. Создав меню, закройте диалоговое окно. С вкладки Win32 возьмите компонент ToolBar Задайте свойства для этого компонента:
И переместите этот компонент в левую часть проекта, изменив размеры. Этот компонент будет панелью инструментов для выбора объектов рисования. Добавим четыре кнопки для компонента ToolBar, для этого в контекстном меню выберем команду NewButton. Для каждой кнопки зададим одинаковые размеры: выделим все кнопки и в инспекторе объектов зададим значения высоты и ширины равные 50. Поместим на кнопки рисунок, для того чтобы знать какой инструмент для рисования брать.
Для этого поместим на форму компонент ImageList с вкладки Win32. Для начала, у компонента ImageList в инспекторе объектов установите значения высоты и ширины равные 50 (КАК И ДЛЯ КНОПОК). Двойным щелчком откройте ImageList и добавьте (Add...) готовые рисунки. Сейчас эти рисунки свяжем с кнопками: У компонента ToolBar для свойства Images выберите значение ImageList1. Рисунок на кнопках появится. С вкладки Samples возьмем компонент ColorGrid и задайте для него следующее свойство:
Для диалога с пользователем (для открытия и сохранения файлов) нужны еще два компонента 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 Все права принадлежат авторам размещенных материалов.
|