程序首先在Image控件區域內畫一個邊長為的正方形作為程序的演示窗口故FormCreate事件如下
procedure TFormFormCreate(Sender: TObject);
begin
// 畫亮綠色的正方形演示框
ImageCanvasBrushColor:=clBlack;
ImageCanvasFillRect(Rect());
ImageCanvasPenColor:=cllime;
ImageCanvasRectangle();
DoubleBuffered := True;
end;
接著放入一個Timer實現點的繪制以及π的計算
procedure TFormTimerTimer(Sender: TObject);
var
abiii:longint;
pipiok:single;
begin
// 隨機產生坐標點
i:=random();
ii:=random();
if (i*i+ii*ii<) then
begin
// 以為半徑的圓內的點設為藍色
ImagecanvasPenColor:=claqua;
a:=StrToInt(LabelCaption);
LabelCaption:=IntToStr(a+);
//顯示當前點的坐標
LabelCaption:=IntToStr(ImageCanvasPenPosX);
LabelCaption:=IntToStr(ImageCanvasPenPosY);
end
else
begin
// 超出這個區域的點都在圓外設為黃色
ImageCanvasPenColor:=clyellow;
b:=StrToInt(LabelCaption);
LabelCaption:=IntToStr(b+);
end;
// 畫點(長為像素的直線)
ImageCanvasMoveTo(iii);
ImageCanvasLineTo(iii+);
// 計算pi的值
pi:=(*(StrToInt(LabelCaption))/(StrToInt(LabelCaption)+StrToInt(LabelCaption)));
LabelCaption:=FloatToStr(pi);
// Label顯示的是最接近真實pi的值
piok:=StrToFloat(LabelCaption);
//得出最接近的圓周率值 piok
if (abs(pi))<(abs(piok)) then
LabelCaption:=FloatToStr(pi);
end;
最後加入兩個SpeedButton作為開始和暫停按鈕代碼分別是TimerEnabled:=true;和TimerEnabled:=false;好了程序這樣就完成了趕快按下F親自模擬一下π的計算吧!
三小結
雖然程序並沒有采用圓周率的算法但能通過隨機數對π進行逼近而由無數點描成的美妙圓弧讓我們歎為觀止其實這樣的思想可以用於許多場合比如對某個數學定理或者自然規律(彩票?)進行模擬希望這樣的思路對您有所啟發
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25031.html