Delphi 7 графика – на примере приложения простого графического редактора. Создадим новое приложение показывающей работу в Delphi 7 графики, позволяющее пользователю рисовать на холсте, выбирая ширину и цвет линии, и возможность сохранять результаты своей работы в файле как точечный рисунок . Рисовать будем не на всей поверхности окна(Form1.Canvas), а на холсте специально отведённого для размещения рисунка компонента Image(Image1.Canvas). Для этого запускаем нашу программу Delphi 7 и добавляем на форму следующие компоненты(см. рис.):

  • 3 кнопки – Button;
  • ColorDialog – диалог выбора цвета;
  • SavePictureDialog – диалог сохранения рисунка;
  • Image – компонент для размещеия, рисования рисунка;
  • Label – компонент для надписи
  • UpDown – компонент с помощью которого будем устанавливать толщину линии(находится на вкладке Win32).
Delphi 7 графика

 


События компонентов в Delphi 7 графика в приложении простого графического редактора:

  • Form1.OnCreate;
  • Image1MouseMove , Image1MouseDown;
  • UpDown1: OnClick;
  • Button1, Button2, Button3: OnClick.

procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:= 'Простейший редактор графики';
Label1.Caption:= 'Толщина линии: 1';
Button1.Caption:= '&Цвет';
Button2.Caption:= '&Стереть';
Button3.Caption:= '&Сохранить';
Image1.Canvas.Brush.Color:= clWhite;
// Над холстом указатель мыши имеет другую форму
Image1.Cursor:=crCross;
UpDown1.Min:=1;
UpDown1.Max:=20;
SavePictureDialog1.DefaultExt:= 'bmp';
end;


Рисование происходит при нажатии левой кнопки мыши (событие On MouseDown) точка, над которой была нажата кнопка, фиксируется, то есть назначается текущим положением пера (метод Canvas.MoveTo). После этого любое перемещение мыши (событие OnMouseMove) проводит линию от текущего положения пера до нового положения указателя мыши, и текущей позицией становится эта новая точка (метод Canvas.LineTo). Так происходит до тех пор, пока остаётся нажатой левая кнопка мыши.


procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//Протаскивание мыши при нажатой левой кнопке
if (ssLeft in Shift) then
//проводит линию от текущей позиции пера до точки,
//над которой находится указатель мыши
Image1.Canvas.LineTo(X,Y);
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// при нажатии левой кнопки мыши
// текущей позицией пера становится точка. над
// которой находится указатель мыши
Image1.Canvas.MoveTo(X,Y);
end;
Компонент UpDown служит для выбора ширины пера. Выбранную ширину мы отображаем в надписи Label1:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
//Устанавливаем ширину линии, выбранную в UpDown
Image1.Canvas.Pen.Width := UpDown1.Position;
Label1.Caption:= 'Толщина линии:' +IntToStr(UpDown1.Position);
end;


При выборе цвета ColorDialog пользователь закрывает окно нажатием кнопки OK, то скопируем значение свойства Color объекта ColorDialog1в одноимённое свойство пера:


procedure TForm1.Button1Click(Sender: TObject);
begin
//открываем диалог выбора цвета
if ColorDialog1.Execute then
Image1.Canvas.Pen.Color := ColorDialog1.Color;
end;
Для того чтобы стереть рисунок закрашиваем весь холст цветом фона – белым:
procedure TForm1.Button2Click(Sender: TObject);
begin
//устанавливаем белый цвет кисти
Image1.Canvas.Brush.Color:= clWhite;
//закрашиваем всё окно текущим цветом
Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
end;


Процесс сохранения рисунка выполняет следующая процедура:

procedure TForm1.Button3Click(Sender: TObject);
var
Img:TBitmap;
Region: TRect;
begin
if SavePictureDialog1.Execute then
// выделяем память для вспомогательной переменной
Img:= TBitmap.Create;
try
Img.Width:= Image1.Width;
Img.Height:= Image1.Height;
Region := Rect(0, 0, Img.Width,Img.Height);
// копируем содержимое Image во вспомогательную переменную
Img.Canvas.CopyRect(Region ,Image1.Canvas, Region );
// сохраняем вспомогательную переменную в файле
Img.SaveToFile(SavePictureDialog1.FileName);
finally
// освобождаем память
Img.Free;
end;
end;
end.
И так процесс создания программы для демонстрации работы в Delphi 7 графика мы завершили. Так будет выглядеть приложение после работы с простейшим редактором графики:


Delphi 7 графика

Скачать исходник простейший редактор графики в Delphi 7 графика:


  

Добавить комментарий


Защитный код
Обновить