pDC->Ellipse(pt.x, pt.y, pt1.x+pt.x, pt1.y+pt.y);

解决方案 »

  1.   

    这种方法不行啊,我试验过了,我也知道只要矩形的长等于宽就可以了。
    补充一下代码: CPoint RoundPoint[2];
    for(int i = 0; i< size; i++)
    {
    RoundPoint[i] = m_PositionList.GetAt(i); }
    if(!m_strName.IsEmpty())//点的名字不为空的时候
    {
    pDC->TextOut(10, 10, m_strName);//pos.x pos.y
    }

      CPoint pt, pt1;
      pt.x = RoundPoint[0].x;
    pt.y = RoundPoint[0].y; pt1.x = RoundPoint[1].x;
    pt1.y = RoundPoint[1].y;
    pDC->Ellipse(CRect(pt.x, pt.y, pt1.x+pt.x, pt1.y+pt.y));
      

  2.   

    Ellipse是用来画椭圆的,pDC->Ellipse(pt.x, pt.y, pt1.x+pt.x, pt1.y+pt.y)画出来的自然是一个椭圆
      

  3.   

    跟踪进去看看,哪个地方不对,可能是pt和pt1的值有问题`~~~~
      

  4.   

    Ellipse(x1,y1,x2,y2),你必须确保x2-x1==y2-y1,这样你画出的就是正圆,而不是椭圆了.
    像pDC->Ellipse(CRect(pt.x, pt.y, pt1.x+pt.x, pt1.y+pt.y));这里必须保证pt1.x==pt2.y才会是正圆
      

  5.   

    void CRoundGraph::Draw(CDC *pDC)
    {
    CPen pen(m_nLineStyle, m_nLineWidth, m_Color);
    CPen *pOldPen = pDC->SelectObject(&pen);

    int size = m_PositionList.GetSize();

    if(size != 2)
    return; POINT RoundPoint[2];
    CPoint RoundPoint[2];
    for(int i = 0; i< size; i++)
    {
    RoundPoint[i] = m_PositionList.GetAt(i); }
    if(!m_strName.IsEmpty())//点的名字不为空的时候
    {
    pDC->TextOut(10, 10, m_strName);//pos.x pos.y
    }

      CPoint pt, pt1;
      pt.x = RoundPoint[0].x;
    pt.y = RoundPoint[0].y; pt1.x = RoundPoint[1].x;
    pt1.y = RoundPoint[1].y; pDC->Ellipse(CRect( RoundPoint[0],  RoundPoint[1]));
    if ((pt1.x-pt.x)==(pt1.y-pt1.y))
    {
    pDC->Ellipse(CRect(pt.x, pt.y, pt1.x+pt.x, pt1.y+pt.y));
    }
    pDC->SelectObject(pOldPen);
    return;
    }
    以上是我的完整程序啊,我试验了也不行啊。
    请那位大哥帮我看看
      

  6.   

    把pDC-> Ellipse(CRect(pt.x,   pt.y,   pt1.x+pt.x,   pt1.y+pt.y)); 
    改为pDC-> Ellipse(CRect(pt.x,   pt.y,   pt1.x+pt.x,   pt1.x+pt.y));