陈 陈晨 Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-28 #1 谁能给我一段平滑画圆和圆弧的程序或者算法。 直线的里面有提供了。我对图形学不很了解,而且还要写图形程序,那位 老兄帮帮忙呀。
Y yangxiao_jiang Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-28 #2 用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;
用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;
P Pearl. Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-28 #4 我都是用笨办法来实现的: 先画一个比需要尺寸大一倍的圆或圆弧。然后再用antialias算法缩成需要尺寸大小,这样最终就得到一个很光滑的圆或圆弧了。
W wzgss Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-28 #5 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;
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;
C chuguozhen Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-28 #7 to Pearl: antialias是反走样吗,你能详细说说吗