谁能给我一段平滑画圆和圆弧的程序或者算法。(100分)

陈晨

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能给我一段平滑画圆和圆弧的程序或者算法。
直线的里面有提供了。我对图形学不很了解,而且还要写图形程序,那位
老兄帮帮忙呀。
 
用Arc来利用当前的画笔设置花一个椭圆形的曲线,该曲线经过一个由坐标
(X1Y1),(X2,Y2)所限制的椭圆的周长。该区现实沿着上叙椭圆的周长逆时针
充起点到终点。起点由(X3,Y3)和该椭圆的中心所构成的直线与该椭圆的周长
的交点定义,终点由(X4,Y4)和该椭圆的中心所构成的直线与该椭圆的周长
的交点定义。
例如: 画一个中心在坐标(200,150),长轴为50,短轴为50的上半圆。

procedure TForm1.Button1Click(Sender: TObject);
begin
canvas.Pen.Color:=clred;
canvas.MoveTo(200,150);
canvas.Arc(200-50,150-50,200+50,150+50,
200-50-10,150,200+50+10,150);
end;


 
我都是用笨办法来实现的:
先画一个比需要尺寸大一倍的圆或圆弧。然后再用antialias算法缩成需要尺寸大小,这样最终就得到一个很光滑的圆或圆弧了。
 
procedure TForm1.FormPaint(Sender: TObject);
var
R: TRect;
begin
R := GetClientRect; {Gets the boundaries of the current window}
Canvas.Arc(R.Left, R.Top, R.Right, R.Bottom, R.Right, R.Top, R.Left, R.Top);
end;
 
to:pearl
麻烦您能不能说详细一点?
 
to Pearl:
antialias是反走样吗,你能详细说说吗
 
这种算法可以处理透明的位图么?
 
接受答案了.
 
顶部