Цель урока: изучить создание приложения “Графический редактор” в среде разработки PascalABC.NET.
Задания по теме урока
Задание 1. Создание приложения «Графический редактор»
Создать и сохранить проект «Графический редактор»
- Разместить на форму
- рабочую область для рисования (из группы «стандартные элементы управления») — PictureBox; компоненты, отображающие выбранный цвет для рисования и цвет фона (из группы «контейнеры») — Panel1, Panel2; компоненты для подписи кнопок (из группы «стандартные элементы управления») Lable1 и Lable2;Переименовать свойство «текст» Lable1 и Lable2 на имя Цвет1 и Цвет 2;компонент выбора цвета (из группы «диалоговые окна») — ColorDialog1;кнопки для смены цвета (из группы «стандартные элементы управления») button1 и button2 ;переименовать свойство «текст» button1 на (Сменить цвет1) и button2 на (Сменить цвет2) ;компонент выбора толщины линии (из группы «стандартные элементы управления») — numericUpDown1;компонент главное меню (из группы «меню и панели инструментов») — menuStrip1;
- компоненты для работы с файлами (из группы «диалоговые окна») — OpenFileDialog1, SaveFileDialog1;
- Установить значение свойства BackColor у компонентов Panel1 и Panel2 — Black и White соответственно.
- У свойств Value и Minimum для компонента numericUpDown1 установить значение 1.
- Создать структуру меню для menuStrip1;
Написать обработчики событий для компонентов:
Описание глобальных переменных
implementation
var gr: Graphics;
bm: Bitmap;
p_c: Pen;
s_b: SolidBrush;
c_f, c_b: Color;
w: decimal;
x1, y1, x2, y2: integer; m_d : boolean;
F_N :string;
Обработчик событий Load формы
procedure Form1.Form1_Load(sender: Object; e: EventArgs);
begin
bm := new Bitmap(pictureBox1.Width,pictureBox1.Height); pictureBox1.Image := (Image)(bm);
gr := Graphics.FromImage(pictureBox1.Image); gr.Clear(Color.White);
gr := pictureBox1.CreateGraphics;
c_f := Color.Black;
p_c := new Pen(c_f, 1);
c_b := Color.White;
s_b := new SolidBrush(c_b);
end;
Обработчик событий numericUpDown1
procedure Form1.numericUpDown1_ValueChanged(sender: Object; e: EventArgs);
begin
p_c.Dispose;
w := numericUpDown1.Value;
p_c := new Pen(c_f, (integer)(w));
end;
Обработчик событий кнопки Сменить цвет 1
procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
colorDialog1.ShowDialog();
c_f:=colorDialog1.color;
w:=numericUpDown1.Value;
p_c.Dispose;
p_c:=new Pen(c_f, (integer) (w));
panel1.BackColor:=c_f;
end;
Обработчик событий кнопки Сменить цвет 2
procedure Form1.button2_Click(sender: Object; e: EventArgs);
begin
colorDialog1.ShowDialog();
c_b := colorDialog1.color; s_b.Dispose;
s_b := new SolidBrush(c_b);
panel2.BackColor := c_b;
end;
Обработчик событий pictureBox1 событие MouseDown
procedure Form1.pictureBox1_MouseDown(sender: Object; e: MouseEventArgs);
begin
m_d := true;
x1 := e.x; y1 := e.y;
end;
Обработчик событий pictureBox1 событие MouseUp
procedure Form1.pictureBox1_MouseUp(sender: Object; e: MouseEventArgs);
begin
m_d:=false;
end;
Обработчик событий pictureBox1 событие MouseMove
procedure Form1.pictureBox1_MouseMove(sender: Object; e: MouseEventArgs);
begin
if m_d then
begin
gr.DrawLine(p_c,x1,y1,e.X,e.Y);
end;
//запомнить координаты для рисования следующего отрезка
x1:=e.X; y1:=e.Y;
end;
Обработчик событий Файл - Новый
procedure Form1.toolStripMenuItem4_Click(sender: Object; e: EventArgs);
begin
//Файл - Новый
gr:=pictureBox1.CreateGraphics;
gr.Clear(c_b);
end;
Обработчик событий Файл - Открыть
procedure Form1.toolStripMenuItem5_Click(sender: Object; e: EventArgs);
begin
//Файл - Открыть
openFileDialog1.ShowDialog();
F_N:=openFileDialog1.FileName;
Text:='Графический редактор '+F_N;
PictureBox1.Load(F_N);
end;
Обработчик событий Файл - Сохранить
procedure Form1.toolStripMenuItem6_Click(sender: Object; e: EventArgs);
begin
//Файл - Сохранить
saveFileDialog1.ShowDialog();
F_N:=saveFileDialog1.FileName;
PictureBox1.Image.Save(F_N);
Text:='Графический редактор '+F_N;
end;
Обработчик событий Файл - Выход
procedure Form1.toolStripMenuItem8_Click(sender: Object; e: EventArgs);
begin
//Файл - Выход
close;
end;
Обработчик событий Цвет - Цвет линии
procedure Form1.toolStripMenuItem9_Click(sender: Object; e: EventArgs);
begin
//Цвет - Цвет линии
ColorDialog1.ShowDialog();
c_f:=colorDialog1.Color;
w:=numericUpDown1.Value;
p_c.Dispose;
p_c:=new Pen(c_f,(integer) (w));
panel1.BackColor:=c_f;
end;
Обработчик событий Цвет - Заливки
procedure Form1.toolStripMenuItem10_Click(sender: Object; e: EventArgs);
begin
//Цвет - Цвет заливки
ColorDialog1.ShowDialog();
c_b:=colorDialog1.Color;
s_b.Dispose;
s_b:=new SolidBrush (c_b);
panel2.BackColor:=c_b;
end;
Сохранить изменения и протестировать приложение.
Домашнее задание
§ 5 учебного пособия, ответить на вопросы после параграфа.