Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,unit2, ColorGrd, Spin;
type
TForm1 = class (Tform)
Button1: TButton;
lbl1: TLabel;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
btn7: TButton;
clrbx1: TColorBox;
se1: TSpinEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure formde(sender:tobject);
procedure btn3Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
procedure btn6Click(Sender: TObject);
procedure btn7Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
Krug: TKrug;
Rectangle: TRectangle;
Line: TLine;
col:TColor;
razm:Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Krug:=Tkrug.Create;
Rectangle:=TRectangle.Create;
Line:=TLine.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Line.color:=clrbx1.Selected;
Line.razmer:=se1.Value;
Line.risovanie(Form1.Canvas);
lbl1.Caption:=lbl1.Caption+#13+'line';
end;
procedure TForm1.formde(sender: tobject);
begin
Krug.Destroy;
Line.Destroy;
Rectangle.Destroy;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Krug.color:=clrbx1.Selected;
Krug.razmer:=se1.Value;
Krug.risovanie(Form1.Canvas);
lbl1.Caption:=lbl1.Caption+#13+'krugi';
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
Rectangle.color:=clrbx1.Selected;
Rectangle.razmer:=se1.Value;
Rectangle.risovanie(Form1.Canvas);
lbl1.Caption:=lbl1.Caption+#13+'rectangle';
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
Rectangle.razmer:=4;
Rectangle.Color:=clBtnFace;
Rectangle.risovanie(Form1.Canvas);
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
Krug.razmer:=4;
Krug.color:=clBtnFace;
Krug.risovanie(Form1.Canvas);
end;
procedure TForm1.btn6Click(Sender: TObject);
begin
Line.razmer:=4;
line.color:=clBtnFace;
Line.risovanie(Form1.Canvas);
end;
procedure TForm1.btn7Click(Sender: TObject);
begin
lbl1.Caption:='';
end;
end.
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TElement = class (TObject)
fcolor:TColor;
frazmer:Integer;
function getrazmer:Integer;
procedure setrazmer(newrazmer:integer);
function getcolor:TColor;
procedure setcolor(newcolor:tcolor);
property razmer:integer read getrazmer write setrazmer;
property color:TColor read getcolor write setcolor;
public
procedure risovanie(canvas: Tcanvas); dynamic; abstract;
end;
TKrug = class(TElement)
public
procedure risovanie(canvas: Tcanvas); override;
end;
TLine = class (TElement)
public
procedure risovanie(canvas: Tcanvas); override;
end;
TRectangle = class (TElement)
public
procedure risovanie(canvas: Tcanvas); override;
end;
implementation
procedure TKrug.risovanie(canvas: Tcanvas);
begin
inherited;
canvas.Pen.width:=frazmer;
canvas.Pen.Color:=fcolor;
canvas.brush.style:=bsclear;
canvas.Ellipse(170,160,190,180);
canvas.Ellipse(200,160,220,180);
canvas.Ellipse(230,160,250,180);
canvas.Ellipse(260,160,280,180);
end;
procedure TRectangle.risovanie(canvas: Tcanvas);
begin
inherited;
canvas.Pen.width:=frazmer;
canvas.Pen.Color:=fcolor;
canvas.brush.style:=bsclear;
Canvas.Rectangle(150,150,300,190);
canvas.Rectangle(200,110,210,150);
end;
procedure TLine.risovanie(canvas: Tcanvas);
begin
inherited;
canvas.Pen.width:=frazmer;
canvas.Pen.Color:=fcolor;
canvas.brush.style:=bsclear;
Canvas.MoveTo(110,190);
canvas.LineTo(320,190);
canvas.MoveTo(110,190);
canvas.LineTo(140,220);
canvas.moveto(140,220);
canvas.lineto(300,220);
Canvas.MoveTo(300,220);
Canvas.LineTo(320,190);
end;
{ TElement }
function TElement.getcolor: TColor;
begin
Result:=fcolor;
end;
function TElement.getrazmer: Integer;
begin
result:=frazmer;
end;
procedure TElement.setcolor(newcolor: tcolor);
begin
fcolor:=newcolor;
end;
procedure TElement.setrazmer(newrazmer: integer);
begin
frazmer:=newrazmer;
end;
end.