DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

Міністерство освіти і науки України Хмельницький національний університет Кафедра системного програмування Лабораторна робота №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:17

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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