mfc画图 在基于对话框的程序中,利用picture控件确定了一个矩形区域,如何在这个区域中画圆,并将该圆分成六分,横向两份,纵向三分。目前可以实现在picture中显示一个圆,但如何划分区域呢,并使分割的线不超出圆的范围。请高手指教,最好有具体的代码实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用Pie函数直接画饼图啥,也就是扇形 Pie函数很好画的,确定了起点角度和终点角度以及半径就可以了。或者你不嫌麻烦就计算出半径的坐标用Line函数分割。 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控件的范围画一个大小合适的圆,但计算分割线坐标时,横纵坐标只有一个容易确定,确定另一坐标时,就要利用源的半径计算了,有点麻烦,有没有更简单的方法,或者代码实现? 通过确定圆的外切正方形的坐标来画线,如何把圆外的多余部分去除,这个设置裁剪区域具体怎么用呢,是裁剪之后,picture控件确定的却与只剩下圆,外面的矩形也没有了吗 CDC::SelectClipRgn()自己创建一个椭圆CRng或HRGN画分割线时设置裁剪区,画完即清除(SelectClipRgn(NULL))To 4L、5L:仔细审题呵呵,LZ是想做井字形分割,不是扇形分割:) 汗,这个还要具体代码这个画图现在就是计算的问题撒你既然会MFC画图不可能计算之后再画图都不会的啊都学过数学的哦 重叠的两个窗口为什么上面那个窗口收不到消息 百万文件中读取部分二进制文件速度问题? 模态对话框被父对话框挡住 不可思议的问题!!兄弟们快来帮帮我!!! 那位有用MFC 开发图形控件的代码啊? 我做的活动文档服务器(active document server)在IE关闭后仍然没退出,为什么呢? 来来来,大家一起进来靠一下,马上结贴! 请问怎么在VC里加一个声音文件啊 C++ Win32窗口 怎么隐藏 菜单上的关闭按钮 fwirte怎么用啊,编译没问题,一运行就崩溃。 opencv 关于VS2005的命令行参数设置
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控件的范围画一个大小合适的圆,但计算分割线坐标时,横纵坐标只有一个容易确定,确定另一坐标时,就要利用源的半径计算了,有点麻烦,有没有更简单的方法,或者代码实现?
画分割线时设置裁剪区,画完即清除(SelectClipRgn(NULL))
To 4L、5L:仔细审题呵呵,LZ是想做井字形分割,不是扇形分割:)
这个画图现在就是计算的问题撒
你既然会MFC画图不可能计算之后再画图都不会的啊
都学过数学的哦