Автор: Айрат Хайруллин, 23 Ноября 2010 в 11:23, практическая работа
Создание программы, которая будет выполнять следующие действия:
-рисование фигур (треугольник, линия, круг);
-сохранение данных о фигурах в определенном формате.
1. Цель работы ……………………………………………….……………3
2. Структура работы ...……………………………………….……………3
3. Ход работы …..…………………………………………….……………3
4. Диаграмма классов …..………...………………………….……………6
5. Диаграмма объектов и связей …..……………..………….……………7
6. Основные понятия и определения……………..………….……………8
Приложение 1………………………………………………………………10
Список использованной литературы………………………………….…..16
begin
x:=DX;
y:=DY;
end;
{ TLine }
constructor TLine.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
dx:=250;
dy:=400;
end;
constructor TLine.CreateParams(ACanvas: TCanvas; X1, Y1, X2, Y2: integer);
begin
Inherited Create(ACanvas);
X:=x1;
Y:=y1;
dX:=x2-x1;
dY:=y2-y1;
end;
procedure TLine.Draw;
begin
Canvas.MoveTo(x,y);
Canvas.LineTo(x+dx,y+dy);
end;
constructor TCircle.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
r :=45;
end;
constructor TTriangle.Create(ACanvas: TCanvas);
begin
Inherited Create(ACanvas);
dx:=150;
dy:=200;
dx2:=-150;
dy2:=-100;
end;
procedure TTriangle.Draw;
begin
Canvas.MoveTo(x,y);
Canvas.LineTo(x+dx,y+dy);
Canvas.LineTo(x+dx+dx2,y+dy+
Canvas.LineTo(x,y);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
F:TFigure;
begin
F:=TTriangle.Create(PaintBox1.
F.Move(Random(300), Random(300));
F.Draw;
Shapes.Add(F);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Shapes:=TList.Create;
drawing := false;
end;
procedure TCircle.Draw;
begin
canvas.Ellipse(x-r,y-r,x+r,y+
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: integer;
begin
if Shapes.Count > 0 then
for i:=0 to Shapes.count-1 do
TFigure(Shapes[i]).Free;
Shapes.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
F:TFigure;
begin
F:=TLine.Create(PaintBox1.
F.Move(Random(200), Random(200));
F.Draw;
Shapes.Add(F);
end;
procedure TForm1.PaintBox1MouseDown(
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
Drawing:=true;
StartX:=X;
StartY:=Y;
FinishX:=X;
FinishY:=Y;
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.Pen.Mode:= pmXOR;
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
end;
end;
procedure TForm1.PaintBox1MouseMove(
Y: Integer);
begin
if drawing then
begin
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
FinishX:=X;
FinishY:=Y;
PaintBox1.Canvas.MoveTo(
PaintBox1.Canvas.LineTo(
end;
end;
procedure TForm1.PaintBox1MouseUp(
Shift: TShiftState; X, Y: Integer);
var F: TFigure;
begin
if drawing then
begin
PaintBox1.Canvas.Pen.Color := clBlack;
PaintBox1.Canvas.Pen.Mode:= pmCopy;
FinishX:=X;
FinishY:=Y;
F:=TLine.CreateParams(
F.Draw;
Shapes.Add(F);
drawing:= false;
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
PaintBox1.Canvas.Brush.Color := clWhite;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.FillRect(
end;
function TLine.ToString: String;
begin
Result:=Format('L %d,%d,%d,%d',[X,Y,dx,dy]);
end;
function TCircle.ToString: String;
begin
Result:=Format('C %d,%d,%d',[X,Y,R]);
end;
function TTriangle.ToString: String;
begin
Result:=Format('T %d,%d,%d,%d,%d,%d',[X,Y,dx,dy,
end;
procedure TForm1.Button3Click(Sender: TObject);
var
SL: tstringlist;
i: integer;
F: TFigure;
s: String;
begin
if SaveDialog1.Execute then
begin
sl:=TStringList.Create;
for i:=0 to Shapes.Count-1 do begin
F:=TFigure(Shapes[i]);
s:=F.ToString;
sl.add(s);
end;
SL.SaveToFile(SaveDialog1.
SL.Free;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
F:TFigure;
begin
F:=TCircle.Create(PaintBox1.
F.Move(Random(400), Random(400));
F.Draw;
Shapes.Add(F);
end;
end.
Список
использованной литературы: