5,388
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
pb1: TPaintBox;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
procedure mPaint();
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.mPaint();
var
mRect: TRect;
i: integer;
radian: real;
mPoint: Array[1..720] of TPoint;
begin
pb1.Canvas.Brush.Color := clWhite;
pb1.Canvas.Brush.Style := bsSolid;
mRect.Left := 0;
mRect.Top := 0;
mRect.Right := pb1.Height;
mRect.Bottom := pb1.Width;
pb1.Canvas.FillRect(mRect);
pb1.Canvas.Pen.Color := clBlack;
pb1.Canvas.Pen.Style := psDash;
pb1.Canvas.Pen.Width := 1;
pb1.Canvas.Rectangle(mRect);
//画刻度
for i:= 1 to 9 do
begin
pb1.Canvas.MoveTo(i*40,0);
pb1.Canvas.LineTo(i*40,400);
pb1.Canvas.MoveTo(0,i*40);
pb1.Canvas.LineTo(400,i*40);
end;
pb1.Canvas.Pen.Style := psSolid;
pb1.Canvas.Pen.Width := 2;
pb1.Canvas.Pen.Color := clRed;
pb1.Canvas.MoveTo( Round(Sin(Pi/180))*150 +200,Round(Cos(Pi/180))*150 +200 );
for i := 1 to 360 do
begin
radian := i * (Pi/180);
//用LineTo的方式画圆
pb1.Canvas.LineTo(200+Round(Sin(radian) * 150), 200+Round(Cos(radian) * 150));
//准备一个正弦多边形数据
mPoint[i].X := i+20;
mPoint[i].Y := 200+Round(Sin(radian) * 100);
mPoint[721-i].X := i+20;
mPoint[721-i].Y := 200-Round(Sin(radian) * 100);
end;
pb1.Canvas.Pen.Color := clBlue;
pb1.Canvas.Brush.Color := clYellow;
pb1.Canvas.Brush.Style := bsDiagCross;
//画一个带填充的多边形
pb1.Canvas.Polygon(mPoint);
//画一个缩小及平移的多段线
for i:= 1 to 720 do
begin
mPoint[i].X := (mPoint[i].X div 2) + 40;
mPoint[i].Y := (mPoint[i].Y div 2) + 40;
end;
pb1.Canvas.Pen.Color := RGB(222,0,222);
pb1.Canvas.Polyline(mPoint);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
pb1.Left := 0;
pb1.Top := 0;
pb1.Height := 400;
pb1.Width := 400;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
mPaint();
end;
end.