试一下如下代码:
private
FPoints: array [0..144] of TPoint;
{...}
procedure TForm1.CalculateGraph;
var
xRangePixels, yRangePixels: Integer;
origin: TPoint;
radian, interval: Double;
i: Integer;
begin
xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi }
yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 }
origin := Point(paintbox1.Width div 2, paintbox1.Height div 2);
radian := -2.0 * Pi;
interval := 4.0 * Pi / 144.0;
for i := 0 to High(FPoints) do
begin
FPoints[i].X := origin.x + Round(radian * xRangePixels / Pi);
FPoints[i].Y := origin.y - Round(sin(radian) * yRangePixels);
radian := radian + interval;
end;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
origin: TPoint;
xRangePixels, yRangePixels: Integer;
begin
with PaintBox1.Canvas do
begin
{ Fill background in white }
Brush.Color := clBtnFace;
Brush.Style := bsSolid;
Fillrect(paintbox1.BoundsRect);