昨天在编程序的时候,看到了ellipse函数画椭圆。搞的我很糊涂,不知道这个函数中的参数是怎么个意思,下面举例子如下:
                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~?
椭圆的中心坐标:(CenterX,CenterY),其中:CenterX = Rect.Buttom/2,CenterY = Rect.Right/2然后,调用ellipse函数:ellipse(5,5,Rect.Buttom-5,Rect.Right-5)我的疑问是,这个ellipse函数是如何通过这些参数画椭圆的?我心中不知道如何利用这些参数形成椭圆,好迷惑。

解决方案 »

  1.   

    Ellipse是通过外接矩形画的,呵呵。
      

  2.   

    如楼上所说,后面两个参数是椭圆的2a和2b吧?但是,后面两个参数都-5后,怎么能保证椭圆的中心还是:(CenterX,CenterY),其中:CenterX=Rect.Buttom/2,CenterY = Rect.Right/2,是不是应该是CenterX=(Rect.Buttom-5)/2,CenterY = (Rect.Right-5)/2呢?
      

  3.   

    这很简单,因为前面也是两个5。
    ellipse(5,5,Rect.bottom-5,Rect.right-5);中心点是
    (CenterX,CenterY),ellipse(0,0,Rect.bottom,Rect.right);中心点也是
    (CenterX,CenterY)只不过大一些了。
      

  4.   

    TO楼上:我是这样理解你的话的,中心是不是这样计算的,一X坐标为例:(Rect.bottom-5+5)/2,而对ellipse(0,0,Rect.bottom,Rect.right),X坐标为(Rect.bottom+0)/2。
    但是,请问,您所说的“只不过大了一些”是什么意思?椭圆大了一些??
      

  5.   

    我昨晚看过MSDN,可惜现在手头没有,只好凭记性了。
    那四个参数好象是X,UPPER_LEFT;Y,UPPER_LEFT;X,LOWER_RIGHT;Y,LOWER_RIGHT.(是矩形的)。呵呵,肯能记的不大对,只是个大概意思了,还请高手指点。
      

  6.   

    to hnyyy:那么,那四个参数的意思就不是“椭圆1.2参数是相对于客户区的坐标。后面两个就是椭圆公式的两个x,y”了,是矩形的什么坐标呢?请回答:)
      

  7.   

    是矩形的四个角相对于客户区的坐标。
    这样也可以的。CRect rect;
    GetClientRect(rect);pDC->ellipse(rect);BOOL Ellipse(ini x1,int y1,ini x2,int y2);
    BOOL Ellipse(LPCRECT lpRect);
    返回值如果成功,则返回非零值,否则为0。
    参数
    x1
    指定椭圆外接矩形左上角的X逻辑坐标。
    Y1
    指定椭圆外接矩形左上角的Y逻辑坐标。
    X2
    指定椭圆外接矩形右下角的X逻辑坐标。
    Y2
    指定椭圆外接矩形右下角的Y逻辑坐标。LpRect
    指定椭圆外接矩形时,可以将Crect对象传递给该参数。
    说明
    绘制椭圆。椭圆与其外接矩形的中心由 x1,y1,x2,y2 或lpRect 指定,椭圆由当前画笔绘制,内部由当前画刷填充。该函数绘制的图形可以扩充到但并不包括右边及底部坐标,亦即图形的高度是y2-y1,宽度是x2-x1。如果外接椭圆的宽度或高度是0,则不绘制椭圆。
      

  8.   

    hnyyy,Thank you very much!"另外,我还想请问大虾们,关于这样的很图形有关的问题,需要怎么入手呢?我编的是个显示一个椭圆时钟的界面,按照例子可以编,可是,自己没有思路。比如,如何计算分钟指针,小时指针,等等。"