Помощь в написании студенческих работ
Антистрессовый сервис

Висновки. 
Відсікання відрізка на площині прямокутним вікном

РефератПомощь в написанииУзнать стоимостьмоей работы

Розроблена програма може використовуватись під час вивчення алгоритмів комп’ютерної графіки як демонстраційний матеріал. Також було розглянуто інші алгоритми відсікання, в подальших версіях програмного забезпечення можна реалізувати алгоритм відсікання лінії вікном іншої форми. В процесі дипломного проектування було створено програмний продукт, що реалізує алгоритм комп’ютерної графіки відсікання… Читать ещё >

Висновки. Відсікання відрізка на площині прямокутним вікном (реферат, курсовая, диплом, контрольная)

В процесі дипломного проектування було створено програмний продукт, що реалізує алгоритм комп’ютерної графіки відсікання відрізка прямокутним вікном. Було розроблено зручний інтуїтивний інтерфейс користувача.

Розроблена програма може використовуватись під час вивчення алгоритмів комп’ютерної графіки як демонстраційний матеріал. Також було розглянуто інші алгоритми відсікання, в подальших версіях програмного забезпечення можна реалізувати алгоритм відсікання лінії вікном іншої форми.

Під час дипломного проектування було вдосконалено навички програмування в середовищі Delphi 7.

Перелік джерел

  • 1. Архангельский А. Я. «Программирование в Delphi 7.» — М.: ООО «Бином-Пресс», 2004 г. — 1152с.: ил.
  • 2. Гарнагина Н. Е. Безпека і охорона праці. Навчальний посібник. — Петербург: МАНЭБ, 2000. — 143 с.
  • 3. ДСТУ 2293−93. Система стандартів безпеки праці. Терміни та визначення.
  • 4. Жидецький В. Ц. Основи охорони праці - Львів: Укр. акад. друкарства, 2006. — 336 с
  • 5. Маценко В. Г. Комп’ютерна графіка: Навчальний посібник. — Чернівці: Рута, 2009 — 343 с.

Додаток А. Тексти програмного коду

unit main_unit;

interface.

uses.

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,.

Dialogs, ExtCtrls, StdCtrls, Buttons, CutLength, Menus, ComCtrls;

type.

TForm_main = class (TForm).

ImInitial: TImage;

LbRectangle: TLabel;

LbTopLeftX: TLabel;

LbTopLeftY: TLabel;

LbBottomRightX: TLabel;

LbBottomRightY: TLabel;

EdTopLeftX: TEdit;

EdTopLeftY: TEdit;

EdBottomRightX: TEdit;

EdBottomRightY: TEdit;

LbLine: TLabel;

EdBeginingX: TEdit;

EdBeginingY: TEdit;

EdEndX: TEdit;

EdEndY: TEdit;

ButDraw: TBitBtn;

ButClear: TBitBtn;

ButClose: TBitBtn;

MenuDraw: TMainMenu;

nExe: TMenuItem;

nDraw: TMenuItem;

nClear: TMenuItem;

nNil: TMenuItem;

nClose: TMenuItem;

RGWayDraw: TRadioGroup;

ButClearImage: TBitBtn;

nHelp: TMenuItem;

nAbout: TMenuItem;

N1: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

N2: TMenuItem;

N3: TMenuItem;

ColorBrush: TColorDialog;

ColorPen: TColorDialog;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

procedure ButCloseClick (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure ButClearClick (Sender: TObject);

procedure ButDrawClick (Sender: TObject);

procedure RGWayDrawClick (Sender: TObject);

procedure ImInitialMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure ImInitialMouseUp (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure ImInitialMouseMove (Sender: TObject; Shift: TShiftState; X,.

Y: Integer);

procedure ButClearImageClick (Sender: TObject);

procedure nAboutClick (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure N6Click (Sender: TObject);

private.

{ Private declarations }.

public.

{ Public declarations }.

end;

var.

Form_main: TForm_main;

hShape, DrawMouse: boolean;

implementation.

{$R *.dfm}.

procedure TForm_main.ButCloseClick (Sender: TObject);

begin.

Close;

end;

procedure TForm_main.FormCreate (Sender: TObject);

begin.

//ImChanged.Canvas.Brush.Color:=clWhite;

ImInitial.Canvas.Brush.Color:=clWhite;

hShape:=false;

end;

procedure TForm_main.ButClearClick (Sender: TObject);

begin.

EdBeginingX.Clear;

EdBeginingY.Clear;

EdEndX.Clear;

EdEndY.Clear;

EdTopLeftX.Clear;

EdTopLeftY.Clear;

EdBottomRightX.Clear;

EdBottomRightY.Clear;

end;

procedure TForm_main.ButDrawClick (Sender: TObject);

var hRec, hLine, h, f:boolean;

TopLeftX, TopLeftY, BottomRightX, BottomRightY, BeginingX, BeginingY, EndX, EndY, BeginingCode, EndCode: integer;

begin.

ImInitial.Canvas.FillRect (Canvas.ClipRect);

// ImChanged.Canvas.FillRect (Canvas.ClipRect);

hRec:=true;

hLine:=true;

Check (EdTopLeftX.Text, EdTopLeftY. Text, EdBottomRightX. Text, EdBottomRightY. Text, TopLeftX, TopLeftY, BottomRightX, BottomRightY, hRec);

Check (EdBeginingX.Text, EdBeginingY. Text, EdEndX. Text, EdEndY. Text, BeginingX, BeginingY, EndX, EndY, hLine);

if not (hRec).

then MessageDlg ('Координати прямокутного вікна задані невірно', mtError,[mbOK], 0);

if not (hLine).

then MessageDlg ('Координати відрізка задані невірно', mtError,[mbOK], 0);

if (hRec and hLine).

then.

begin.

if TopLeftX>BottomRightX.

then Swapping (TopLeftX, BottomRightX);

if TopLeftY>BottomRightY.

then Swapping (TopLeftY, BottomRightY);

ImInitial.Canvas.Rectangle (TopLeftX, TopLeftY, BottomRightX, BottomRightY);

ImInitial.Canvas.MoveTo (BeginingX, BeginingY);

ImInitial.Canvas.LineTo (EndX, EndY);

BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, BeginingX, BeginingY, BeginingCode);

BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, EndX, EndY, EndCode);

Processing (BeginingCode, EndCode, TopLeftX, TopLeftY, BottomRightX, BottomRightY, h, f, BeginingX, BeginingY, EndX, EndY);

if not (h).

then MessageDlg ('Відрізок за межами прямокутника', mtInformation,[mbOK], 0).

else if f.

then MessageDlg ('Відрізок повністю всередині прямокутника', mtInformation,[mbOK], 0).

else MessageDlg ('Відрізок частково знаходиться в прямокутнику', mtInformation,[mbOK], 0);

ImInitial.Canvas.FillRect (Canvas.ClipRect);

ImInitial.Canvas.Rectangle (TopLeftX, TopLeftY, BottomRightX, BottomRightY);

ImInitial.Canvas.MoveTo (BeginingX, BeginingY);

ImInitial.Canvas.LineTo (EndX, EndY);

end;

end;

procedure TForm_main.RGWayDrawClick (Sender: TObject);

begin.

case RGWayDraw. ItemIndex of.

0: begin.

ImInitial.Enabled:=False;

EdTopLeftX.Enabled:=True;

EdTopLeftY.Enabled:=True;

EdBottomRightX.Enabled:=True;

EdBottomRightY.Enabled:=True;

EdBeginingX.Enabled:=True;

EdBeginingY.Enabled:=True;

EdEndx.Enabled:=True;

EdEndY.Enabled:=True;

end;

1: begin.

ImInitial.Enabled:=True;

EdTopLeftX.Enabled:=False;

EdTopLeftY.Enabled:=False;

EdBottomRightX.Enabled:=False;

EdBottomRightY.Enabled:=False;

EdBeginingX.Enabled:=False;

EdBeginingY.Enabled:=False;

EdEndx.Enabled:=False;

EdEndY.Enabled:=False;

end;

end;

end;

procedure TForm_main.ImInitialMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin.

if hShape.

then.

begin.

EdBeginingX.Text:=IntToStr (X);

EdBeginingY.Text:=IntToStr (Y);

end.

else.

begin.

EdTopLeftX.Text:=IntToStr (X);

EdTopLeftY.Text:=IntToStr (Y);

end;

DrawMouse:=true;

end;

procedure TForm_main.ImInitialMouseUp (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin.

if hShape.

then.

begin.

EdEndX.Text:=IntToStr (X);

EdEndY.Text:=IntToStr (Y);

ImInitial.Canvas.MoveTo (StrToInt (EdBeginingX.Text), StrToInt (EdBeginingY.Text));

ImInitial.Canvas.LineTo (X, Y);

hShape:=false;

end.

else.

begin.

EdBottomRightX.Text:=IntToStr (X);

EdBottomRightY.Text:=IntToStr (Y);

ImInitial.Canvas.Rectangle (StrToInt (EdTopLeftX.Text), StrToInt (EdTopLeftY.Text), X, Y);

hShape:=true;

end;

DrawMouse:=False;

end;

procedure TForm_main.ImInitialMouseMove (Sender: TObject; Shift: TShiftState; X,.

Y: Integer);

begin.

if DrawMouse.

then.

if hShape.

then.

begin.

ImInitial.Canvas.FillRect (Canvas.ClipRect);

ImInitial.Canvas.Rectangle (StrToInt (EdTopLeftX.Text), StrToInt (EdTopLeftY.Text), StrToInt (EdBottomRightX.Text), StrToInt (EdBottomRightY.Text));

ImInitial.Canvas.MoveTo (StrToInt (EdBeginingX.Text), StrToInt (EdBeginingY.Text));

ImInitial.Canvas.LineTo (X, Y);

end.

else.

begin.

ImInitial.Canvas.FillRect (Canvas.ClipRect);

ImInitial.Canvas.Rectangle (StrToInt (EdTopLeftX.Text), StrToInt (EdTopLeftY.Text), X, Y);

end;

end;

procedure TForm_main.ButClearImageClick (Sender: TObject);

begin.

ImInitial.Canvas.FillRect (Canvas.ClipRect);

//ImChanged.Canvas.FillRect (Canvas.ClipRect);

hShape:=false;

end;

procedure TForm_main.nAboutClick (Sender: TObject);

begin.

MessageDlg ('ДП 2015 Розробив Лісовий Денис', mtInformation,[mbOK], 0);

end;

procedure TForm_main.N3Click (Sender: TObject);

begin.

if ColorBrush. Execute then.

Iminitial.Canvas.Brush.Color:=ColorBrush.Color;

Iminitial.Canvas.FloodFill (1,1,clBlue, fsBorder);

end;

procedure TForm_main.N4Click (Sender: TObject);

begin.

if ColorPen. Execute then.

Iminitial.Canvas.Pen.Color:=ColorPen.Color;

end;

procedure TForm_main.N5Click (Sender: TObject);

begin.

Iminitial.Canvas.Pen.Width:=Iminitial.Canvas.Pen.Width+1;

end;

procedure TForm_main.N6Click (Sender: TObject);

begin.

Iminitial.Canvas.Pen.Width:=Iminitial.Canvas.Pen.Width-1;

end;

end.

unit CutLength;

interface.

const //Max=320;

LeftBit=$ 1;

RightBit=$ 2;

AboveBit=$ 4;

BelowBit=$ 8;

procedure Check (ast, bst, cst, dst: string; var a, b, c, d: integer; var h: boolean);

procedure Swapping (var a, b: integer);

procedure BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, X, Y:integer; var Code: integer);

procedure Processing (BeginingCode, EndCode, TopLeftX, TopLeftY, BottomRightX, BottomRightY: integer; var h, f: boolean; var x1, y1,x2,y2:integer);

implementation.

uses SysUtils;

procedure Check (ast, bst, cst, dst: string; var a, b, c, d: integer; var h: boolean);

begin.

if ((not (TryStrToInt (ast, a))) or (not (TryStrToInt (bst, b))) or (not (TryStrToInt (cst, c))) or (not (TryStrToInt (dst, d)))).

then h:=false;

end;

procedure Swapping (var a, b: integer);

var c: integer;

begin.

c:=a;

a:=b;

b:=c;

end;

procedure BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, X, Y:integer; var Code: integer);

begin.

code:=$ 0;

if X.

then code:=code or LeftBit;

if X>BottomRightX.

then code:=code or RightBit;

if Y.

then code:=code or AboveBit;

if Y>BottomRightY.

then code:=code or BelowBit;

end;

procedure Processing (BeginingCode, EndCode: integer; TopLeftX, TopLeftY, BottomRightX, BottomRightY: integer; var h, f: boolean; var x1, y1,x2,y2:integer);

begin.

h:=true;

f:=false;

if ((BeginingCode and EndCode)0).

then.

begin.

h:=false;

x1:=0;

y1:=0;

x2:=0;

y2:=0;

end;

if ((BeginingCode or EndCode)=0).

then f:=true;

while (((BeginingCode and EndCode)=0) and ((BeginingCode or EndCode)0)) do.

begin.

if (BeginingCode=0).

then.

begin.

Swapping (BeginingCode, EndCode);

Swapping (x1,x2);

Swapping (y1,y2);

end;

if ((BeginingCode and LeftBit)0).

then.

begin.

y1:=round (y1+(y2-y1)*(TopLeftX-x1)/(x2-x1));

x1:=TopLeftX;

end.

else.

if ((BeginingCode and AboveBit)0).

then.

begin.

x1:=round (x1+(x2-x1)*(TopLeftY-y1)/(y2-y1));

y1:=TopLeftY;

end.

else.

if ((BeginingCode and RightBit)0).

then.

begin.

y1:=round (y1+(y2-y1)*(BottomRightX-x1)/(x2-x1));

x1:=BottomRightX;

end.

else.

if ((BeginingCode and BelowBit)0).

then.

begin.

x1:=round (x1+(x2-x1)*(BottomRightY-y1)/(y2-y1));

y1:=BottomRightY;

end;

BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, x1, y1,BeginingCode);

BitCode (TopLeftX, TopLeftY, BottomRightX, BottomRightY, x2, y2,EndCode);

end;

if ((BeginingCode and EndCode)0).

then.

begin.

h:=false;

x1:=0;

y1:=0;

x2:=0;

y2:=0;

end;

end;

end.

Показать весь текст
Заполнить форму текущей работой