Розробка складних додатків з використанням графіки

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Хмельницький національний університет Кафедра системного програмування Лабораторна робота №6 з програмування на тему: «Розробка складних додатків з використанням графіки» Лабораторна робота №6 Тема: Розробка складних додатків з використанням графіки. Мета:ознайомитись з графічними можливостями середовища Delphi та навчитись їх застосовувати за призначенням. Завдання Розробити графічний редактор з можливостями кисті та заливки, який може працювати з графічними файлами (відкрити, зберегти) та містить головне меню з пунктами “Файл”, “Формат ”, “Про програму”. Пункт меню “Файл” містить підпункти “Відкрити”, “Зберегти”, “Вихід”. Пункт меню “Формат” містить підпункти редагування розміру кисті та кольору. Project1.lpr program project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset Forms, Unit1, LResources, Printer4Lazarus { you can add units after this }; {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} begin {$I project1.lrs} Application.Title:='Текстовий редактор'; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Unit1.pas unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Menus, StdCtrls, ExtCtrls, Spin; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; ColorDialog1: TColorDialog; MainMenu1: TMainMenu; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; MenuItem13: TMenuItem; MenuItem14: TMenuItem; MenuItem15: TMenuItem; MenuItem16: TMenuItem; MenuItem17: TMenuItem; MenuItem18: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; PaintBox1: TPaintBox; SpinEdit1: TSpinEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); procedure MenuItem10Click(Sender: TObject); procedure MenuItem11Click(Sender: TObject); procedure MenuItem12Click(Sender: TObject); procedure MenuItem13Click(Sender: TObject); procedure MenuItem14Click(Sender: TObject); procedure MenuItem15Click(Sender: TObject); procedure MenuItem16Click(Sender: TObject); procedure MenuItem17Click(Sender: TObject); procedure MenuItem18Click(Sender: TObject); procedure MenuItem4Click(Sender: TObject); procedure MenuItem5Click(Sender: TObject); procedure MenuItem6Click(Sender: TObject); procedure MenuItem9Click(Sender: TObject); procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure PaintBox1Paint(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; StartX, StartY,a:integer; pn,sv:boolean; clr:TColor; BM,BMt:TBitmap; FName,FLoad:string; SRect, DRect: TRect; implementation { TForm1 } procedure TForm1.MenuItem4Click(Sender: TObject); //відкрити begin if not sv then MenuItem5Click(Sender); OpenDialog1.Filter:='Bitmap|*.bmp|All|*.*'; if OpenDialog1.Execute then begin sv:=false; FLoad:=OpenDialog1.FileName; BMt:=TBitmap.Create; BMt.LoadFromFile(FLoad); PaintBox1.Canvas.Clear; BM.LoadFromFile(FLoad); PaintBox1.Width:=BMt.Width; PaintBox1.Height:=BMt.Height; PaintBox1.Canvas.Draw(0,0,BM); BMt.Free; end; end; procedure TForm1.MenuItem5Click(Sender: TObject); //зберегти begin BMt:=TBitmap.Create; BMt.Width:=PaintBox1.Width; BMt.Height:=PaintBox1.Height; DRect:=Rect(0,0,PaintBox1.Width,PaintBox1.Height); SRect:=Rect(0,0,BMt.Width,BMt.Height); BMt.Canvas.CopyRect(SRect,PaintBox1.Canvas,DRect); SaveDialog1.Filter:='Bitmap|*.bmp|All|*.*'; if SaveDialog1.Execute then begin FName:=(SaveDialog1.FileName); BMt.SaveToFile(FName+'.bmp'); sv:=True; BMt.Free; end; end; procedure TForm1.MenuItem6Click(Sender: TObject); //закрити begin Form1.Close; end; procedure TForm1.MenuItem9Click(Sender: TObject); //зменшити кисть begin PaintBox1.Canvas.Pen.Width:=PaintBox1.Canvas.Pen.Width-1; if PaintBox1.Canvas.Pen.Width=1 then exit; end; procedure TForm1.MenuItem10Click(Sender: TObject); //збільшити кисть begin PaintBox1.Canvas.Pen.Width:=PaintBox1.Canvas.Pen.Width+1; if PaintBox1.Canvas.Pen.Width>=100 then exit; end; procedure TForm1.MenuItem11Click(Sender: TObject); //вказати розмір begin a:=StrToInt(InputBox('Зміна розміру кисті','Введіть значення:','')); a:=a div 1; if a<1 then PaintBox1.Canvas.Pen.Width:=1 else if a>100 then PaintBox1.Canvas.Pen.Width:=100 else PaintBox1.Canvas.Pen.Width:=a; end; procedure TForm1.MenuItem12Click(Sender: TObject); //чорний begin clr:=clBlack; end; procedure TForm1.MenuItem13Click(Sender: TObject); //червоний begin clr:=clRed; end; procedure TForm1.MenuItem14Click(Sender: TObject); //синій begin clr:=clBlue; end; procedure TForm1.MenuItem15Click(Sender: TObject); //зелений begin clr:=clGreen; end; procedure TForm1.MenuItem16Click(Sender: TObject); //білий begin clr:=clWhite; end; procedure TForm1.MenuItem17Click(Sender: TObject); //вказати колір begin if ColorDialog1.Execute then clr:=ColorDialog1.Color; end; procedure TForm1.MenuItem18Click(Sender: TObject); //Про програму begin ShowMessage('Графічний редактор призначений для створення і збереження малюнків в форматі .bmp.'+#13+'При малюванні можна змінювати розмір та колір кисті для малювання.'+#13+'Розробник: Ноль М.Г., КІ-10-1.'); end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin PaintBox1.Canvas.Pen.Width:=SpinEdit1.Value; end; procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin StartX:=X; StartY:=Y; if pn=True then begin PaintBox1.Canvas.Brush.Color:=clr; PaintBox1.Canvas.FloodFill(X,Y,PaintBox1.Canvas.Pixels[X,Y],fsSurface); sv:=False; BM.Width:=PaintBox1.Width; BM.Height:=PaintBox1.Height; DRect:=Rect(0,0,PaintBox1.Width,PaintBox1.Height); SRect:=Rect(0,0,BM.Width,BM.Height); BM.Canvas.CopyRect(SRect,PaintBox1.Canvas,DRect); end else PaintBox1.Canvas.Pen.Color:=clr; end; procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not (ssLeft in Shift) then Exit; with PaintBox1.Canvas do begin MoveTo(StartX,StartY); LineTo(X,Y); end; StartX:=X; StartY:=Y; sv:=False; BM.Width:=PaintBox1.Width; BM.Height:=PaintBox1.Height; DRect:=Rect(0,0,PaintBox1.Width,PaintBox1.Height); SRect:=Rect(0,0,BM.Width,BM.Height); BM.Canvas.CopyRect(SRect,PaintBox1.Canvas,DRect); end; procedure TForm1.PaintBox1Paint(Sender: TObject); begin if not sv then begin PaintBox1.Canvas.Clear; PaintBox1.Canvas.Draw(0,0,BM); end; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin BMt:=TBitmap.Create; BMt.Width:=PaintBox1.Width; BMt.Height:=PaintBox1.Height; DRect:=Rect(0,0,PaintBox1.Width,PaintBox1.Height); SRect:=Rect(0,0,BMt.Width,BMt.Height); BMt.Canvas.CopyRect(SRect,PaintBox1.Canvas,DRect); CanClose:=MessageDlg('Графічний редактор','Дійсно закрити?',mtConfirmation,[mbYes,mbNo],0)=mrYes; if CanClose and not sv then if (MessageDlg('Графічний редактор','Зберегти перед виходом ?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then begin SaveDialog1.Filter:='Bitmap|*.bmp|All|*.*'; if SaveDialog1.Execute then begin FName:=(SaveDialog1.FileName); BMt.SaveToFile(FName+'.bmp'); sv:=True; end; end; BMt.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin pn:=False; end; procedure TForm1.Button2Click(Sender: TObject); begin pn:=True; end; procedure TForm1.Button3Click(Sender: TObject); begin PaintBox1.Canvas.Brush.Color:=clWhite; PaintBox1.Canvas.Clear; PaintBox1.Color:=clWhite; BM.Width:=PaintBox1.Width; BM.Height:=PaintBox1.Height; DRect:=Rect(0,0,PaintBox1.Width,PaintBox1.Height); SRect:=Rect(0,0,BM.Width,BM.Height); BM.Canvas.CopyRect(SRect,PaintBox1.Canvas,DRect); pn:=False; end; procedure TForm1.FormCreate(Sender: TObject); begin PaintBox1.Canvas.Pen.Width:=1; PaintBox1.Canvas.Pen.Color:=clBlack; sv:=True; BM:=TBitmap.Create; BM.Width:=PaintBox1.Width; BM.Height:=PaintBox1.Height; end; initialization {$I unit1.lrs} end. Висновок. Виконавши лабораторну роботу, я освоїв роботу програм з такими графічними компонентами як TPaintBox та його властивістю Canvas, яка дає можливість малювати на компоненті. Розглянув принципи роботи з властивостями канви Pen та Brush, її методами Rect, CopyRect, Clear та інші. Також закріпив навички роботи з компонентами середовища Delphi TMainMenu та діалогами TOpenDialog TSaveDialog, зрозумів основні принципи створення графічного редактора. //
Антиботан аватар за замовчуванням

28.03.2013 22:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!