没有直接的这种函数,自己修改一个吧

解决方案 »

  1.   

    起始点问题见msdn:CDC::ArcTo.vc中画弧就三个函数,在win98下有的还不能用。下面是我自己写的画弧的函数,仅供参考。我写的程序很烂,凑合看吧。//start:起点,rear:终点,都必须在弧上,center:圆心.fPoint:实数表示的二维坐标点
    //逆时针画弧
    //把弧分为小段,以直线代替
    void CMyView::DrawArc(fPoint center, fPoint start, fPoint rear,CDC* pDC)
    {
    double r=GetLength(center,start);//get radius double chordlong=GetLength(start,rear);//求弦长 double angle=2*asin(chordlong/2/r);//圆心角 const int no=50;//份数 double miniang=angle/no; double k1=tan(miniang);
    fPoint fp1=start;
    CPoint cp1=ChangePoint(fp1);//change to CPoint
    pDC->MoveTo(cp1); fPoint fp2;
    double ks=(center.y-fp1.y)/(center.x-fp1.x) ; for(int i=1;i<=50;i++)
    {
    double ke=(k1+ks)/(1-k1*ks);
    double aa=sqrt(r*r/(ke*ke+1)); double x1=aa+center.x;
    double x2=-aa+center.x;
    double y1=ke*(x1-center.x)+center.y;
    double y2=ke*(x2-center.x)+center.y;
    if(y1<center.y)
    {
    fp2.x=x1;
    fp2.y=y1;
    }
    else
    {
    fp2.x=x2;
    fp2.y=y2;
    }
    CPoint cp2=ChangePoint(fp2);
    pDC->LineTo(cp2);
    ks=ke;
    }
    }