37768

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

Лабораторная работа

Информатика, кибернетика и программирование

ps unit Unit1; {mode objfpc}{H} interfce uses Clsses SysUtils FileUtil LResources Forms Controls Grphics Dilogs Menus StdCtrls ExtCtrls Spin; type { TForm1 } TForm1 = clssTForm Button1: TButton; Button2: TButton; Button3: TButton; ColorDilog1: TColorDilog; MinMenu1: TMinMenu; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9:...

Украинкский

2013-09-25

1.16 MB

1 чел.

7

Міністерство освіти і науки України

Хмельницький національний університет

Кафедра системного програмування

Лабораторна робота №6

з програмування

на тему:

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

Виконав:

Студент групи КІ-10-1

Ноль М.Г.

Перевірив:

Мостовий С.В.

Хмельницький

2011

Лабораторна робота №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, зрозумів основні принципи створення графічного редактора.


 

А также другие работы, которые могут Вас заинтересовать

36615. РЕГІОНАЛЬНЕ УПРАВЛІННЯ 584.5 KB
  Регіональне управління [конспект лекцій для студентів спеціальності 6. Конспект лекцій з дисципліни Регіональне управління призначений для студентів спеціальності 6. Конспект лекцій з дисципліни Регіональне управління складено на підставі відповідних нормативних вимог Міністерства освіти і науки молоді та спорту України.
36616. КОНСПЕКТ ЛЕКЦІЙ З ТРУДОВОГО ПРАВА УКРАЇНИ 217 KB
  Предмет і система трудового права Трудове право розглядається в 3 значеннях як галузь права як науку і як навчальну дисципліну. Предмет трудового права це сукупність трудових та інших повязаних з ними суспільних відносин з приводу організації та здійснення найманої оплачуваної праці. Перша загальна частина до якої входять такі інститути: а поняття та предмет трудового права; б основні принципи трудового права; в джерела трудового права; г суб'єкти трудового права; ґ трудові правовідносини; д колективний договір; е правова...
36617. УСТАТКУВАННЯ ЗАКЛАДІВ ГОТЕЛЬНО-РЕСТОРАННОГО ГОСПОДАРСТВА. Механічне та теплове устаткування 12.46 MB
  Універсальні кухонні машини. Допоміжними елементами машини є засоби керування регулювання захисту сигналізації а також пристрої які забезпечують безпеку експлуатації. Ведуча ланка зєднується з приводом машини а ведена з робочими органами. Такі машини називаються складними на відміну від простих машин з одним робочим органом.
36618. ОБ’ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ 3.53 MB
  Обєктноорієнтоване програмування це методологія програмування яка базується на поданні програми у вигляді сукупності обєктів кожний із яких є реалізацією певного класу а класи утворюють ієрархію на принципах успадкування. кожний обєкт є реалізацією певного класу; 3. Це обєкт класу який асоційований з системною консоллю і отже все те що буде передано в цей об'єкт за допомогою оператора буде виведено в консоль. Тема 15 Поняття класу.
36619. Цивільний захист. Курс лекцій 2.99 MB
  Розроблення найбільш доцільних заходів для захисту людей. Тема 4 : ЗАХИСТ НАСЕЛЕННЯ І ПЕРСОНАЛУ ПІДПРИЄМСТВ ПРИ НС Для захисту населення і персоналу підприємств передбачаються наступні заходи: Своєчасне оповіщення про погрозу НС або її виникнення. Використання засобів індивідуального захисту промислового або самостійного вироблення. Введення режимів радіаційного захисту на заражених територіях до початку евакуації.
36620. КОНСПЕКТ ЛЕКЦІЙ З УКРАЇНСЬКОЇ МОВИ 327.5 KB
  КОНСПЕКТ ЛЕКЦІЙ З УКРАЇНСЬКОЇ МОВИ для студентів 1 курсу напрямів підготовки Облік і аудит Конспект лекцій з української мови для студентів напрямів підготовки. Дидактична мета курсу: розширення знань про українську мову як національну мову українського народу виховання поваги до української літературної мови; набуття знань про особливості офіційноділового стилю класифікацію документів структуру тексту документа вимоги до складання й оформлення ділових...
36621. Суть залізобетону. Матеріали для залізобетонних конструкцій 18 MB
  Суть залізобетону Бетон це штучний камяний матеріал який добре протистоїть стисканню і значно гірше розтяганню. Залізобетоном називають штучний композитний будівельний матеріал що складається з бетону та сталевої арматури які працюють разом. Елементи під навантаженням: а бетонна балка; б залізобетонна балка; в залізобетонна колона Армування бетонної балки дає можливість використовувати міцність сталевої арматури на розтягання і міцність бетону на стискання. Армування стиснутого бетону підвищує також надійність залізобетонних...
36622. Трудова поведінка: зміст, структура, функції 92.5 KB
  Трудова поведінка як різновид соціальної поведінки. Зміст структура та функції трудової поведінки. Види трудової поведінки. Механізми регуляції трудової поведінки.
36623. Информационные системы предприятия 1.03 MB
  В самом общем виде под информационной системой предприятия (ИСП) понимается весь комплекс данных и знаний, используемых на предприятии в целях управления и любой другой, направленной на экономический эффект деятельности, вместе со средствами получения, учета, хранения, доступа, представления, а также анализа данных и знаний.