在基于对话框的程序中,利用picture控件确定了一个矩形区域,如何在这个区域中画圆,并将该圆分成六分,横向两份,纵向三分。目前可以实现在picture中显示一个圆,但如何划分区域呢,并使分割的线不超出圆的范围。
请高手指教,最好有具体的代码实现。

解决方案 »

  1.   

    可以用Pie函数直接画饼图啥,也就是扇形
      

  2.   

    Pie函数很好画的,确定了起点角度和终点角度以及半径就可以了。或者你不嫌麻烦就计算出半径的坐标用Line函数分割。
      

  3.   

    CBitmap bmp1;
    CRect rc1;
    CPaintDC dc1(GetDlgItem(IDC_STATIC1));
    GetDlgItem(IDC_STATIC1)->GetClientRect(rc1);
    bmp1.CreateCompatibleBitmap(&dc1,rc1.Width(),rc1.Height());
    CDC memDC1;
    memDC1.CreateCompatibleDC(&dc1);
    memDC1.SelectObject(&bmp1);
    CPen pen;
    pen.CreatePen(PS_SOLID,2,RGB(255,0,0));
    CPen *oldpen=(CPen*)memDC1.SelectObject(&pen);
    CPoint pt(rc1.CenterPoint());
    int WIDTH = min(rc1.Width(), rc1.Height());
    int HEIGHT = WIDTH;
    int WIDTH2 = WIDTH/2;
    int HEIGHT2 = WIDTH2;
    int x1 = pt.x - WIDTH / 2;
    int y1 = pt.y - HEIGHT / 2;
    int x2 = pt.x + WIDTH / 2;
    int y2 = pt.y + HEIGHT / 2;
    memDC1.Ellipse(x1,y1,x2,y2); 
    以上可以根据picture控件的范围画一个大小合适的圆,但计算分割线坐标时,横纵坐标只有一个容易确定,确定另一坐标时,就要利用源的半径计算了,有点麻烦,有没有更简单的方法,或者代码实现?
      

  4.   

    通过确定圆的外切正方形的坐标来画线,如何把圆外的多余部分去除,这个设置裁剪区域具体怎么用呢,是裁剪之后,picture控件确定的却与只剩下圆,外面的矩形也没有了吗
      

  5.   

    CDC::SelectClipRgn()自己创建一个椭圆CRng或HRGN
    画分割线时设置裁剪区,画完即清除(SelectClipRgn(NULL))
    To 4L、5L:仔细审题呵呵,LZ是想做井字形分割,不是扇形分割:)
      

  6.   

    汗,这个还要具体代码
    这个画图现在就是计算的问题撒
    你既然会MFC画图不可能计算之后再画图都不会的啊
    都学过数学的哦