Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet.docx
Скачиваний:
9
Добавлен:
26.03.2016
Размер:
486.32 Кб
Скачать

Алгоритмы

Алгоритмы этой работы идентичны предыдущей.

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

Создание собственного класса и объектов

Задание: Средствами ООП, реализовать задачу в соответствии с вариантом шестой лабораторной работы. Решение задачи изобразить на холсте.

Интерфейс программы

Интерфейс программы идентичен шестой лабораторной работе.

Код программы

Исходный код модуля с классом:

unit Unit1;

interface

uses Windows, Graphics, Classes,ExtCtrls;

type

Tpo = array of Tpoint;

Rect = TRect;

TMyClass = class

countpoint: integer;

po:tpo;

Point: TPoint;

FPColor,FBColor: TColor;

Canvas: TCanvas;

Rect: TRect;

ColPoint: byte;

Width: word;

Rad: word;

Img: TImage;

r1:rect;

Procedure SetPenColor(c: Tcolor);

Procedure SetBColor (c: Tcolor); // задать цвет

Procedure RenPenColor;

procedure VarRad;

procedure VarWidth;

Constructor Create(Img1: TImage;ColPoint: byte);

Destructor Destroy;override;

function colpo(po:tpo):integer;

procedure postroenie(Img: TImage;var po:tpo);

procedure addPoint(x,y,countPoint:integer;var po:tpo);

procedure clear;

property PCol:Tcolor Read FPColor Write SetPenColor;

property BCol:TColor Read FBColor Write SetBColor;

private

{ Private declarations }

public

{ Public declarations }

end;

var

MyClass: TMyClass;

implementation

procedure TMyClass.SetBColor(c: Tcolor);

begin

end;

Procedure TMyClass.SetPenColor(c: Tcolor);

begin

end;

procedure TMyClass.VarRad;

begin

end;

procedure TMyClass.VarWidth;

begin

end;

procedure TMyClass.addPoint(x,y,countPoint:integer; var po:tpo);

begin

setLength(po,countPoint+1);

po[countPoint].X:=x;

po[countPoint].Y:=y;

end;

destructor TMYClass.Destroy;

begin

inherited;

end;

procedure TMyClass.postroenie(Img: TImage; var po:tpo);

begin

img.Canvas.Pen.Color:=Rgb(0,0,255);

img.Canvas.Brush.Color:=rgb(100,0,100);

img.Canvas.rectangle(po[0].X,po[0].y, po[1].X,po[1].y);

end;

procedure TMyClass.RenPenColor;

begin

end;

function TMyClass.colpo(po:tpo):integer;

var i,d:integer;

begin

d:=0;

for I := 2 to length(po) - 1 do

if ((po[i].X>po[0].X) and (po[i].X<po[1].X)) then

if ((po[i].y>po[0].y) and (po[i].y<po[1].y)) then

d:=d+1;

colpo:=d;

end;

procedure TMyClass.Clear;

begin

setLength(po,countPoint);

Img.Canvas.Brush.Color := ClWhite;

Img.Canvas.FillRect(Img.Canvas.ClipRect)

end;

constructor TMyClass.Create(Img1: TImage;ColPoint: byte);

begin

img:=Img1;

rad:= 0;

po:=0;

end;

end.

Исходный код программы:

procedure TForm1.FormActivate(Sender: TObject);

begin

a:=0;

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

Form1.StatusBar1.Panels[0].Text:='Кол-во точек в прямоугольнике = '+floatTostr(MClass.colpo(po));

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

begin

Image1.Canvas.Pen.Color:=Rgb(0,25,0);

Image1.Canvas.Brush.Color:=Rgb(0,26,0);

Image1.Canvas.Ellipse(x-2,y-2,x+2,y+2);

MClass.addpoint(X,Y,A,po);

if a=1 then

begin

MClass.postroenie(Image1,po);

end;

a:=a+1;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]