Створення графічного редактора в delphi, інформатика, учневі

Створивши меню, закрийте діалогове вікно.
З вкладки 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.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;
Відкрийте програму. 

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;

Схожі статті