怎么把两个不同的rgn区域合并在一起?
比方一个椭圆和一个矩形,谢谢CPaintDC dc(this);
dc.SelectStockObject(NULL_PEN);
CRect rect;
GetClientRect(rect);
CRgn rgn1;
CRgn rgn2;
CRgn *rgn3=NULL;
rgn1.CreateEllipticRgnIndirect(rect);
rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
CombineRgn(*rgn3,rgn1,rgn2,RGN_OR); CBrush newpbrush;
CBrush *oldpbrush;
newpbrush.CreateSolidBrush(RGB(0,0,0));
dc.FillRgn(rgn3,&newpbrush);
SetWindowRgn((HRGN)rgn3,TRUE);
oldpbrush=dc.SelectObject(&newpbrush);
delete rgn3;
为什么就是得不到要合并的区域?
比方一个椭圆和一个矩形,谢谢CPaintDC dc(this);
dc.SelectStockObject(NULL_PEN);
CRect rect;
GetClientRect(rect);
CRgn rgn1;
CRgn rgn2;
CRgn *rgn3=NULL;
rgn1.CreateEllipticRgnIndirect(rect);
rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
CombineRgn(*rgn3,rgn1,rgn2,RGN_OR); CBrush newpbrush;
CBrush *oldpbrush;
newpbrush.CreateSolidBrush(RGB(0,0,0));
dc.FillRgn(rgn3,&newpbrush);
SetWindowRgn((HRGN)rgn3,TRUE);
oldpbrush=dc.SelectObject(&newpbrush);
delete rgn3;
为什么就是得不到要合并的区域?
解决方案 »
- 带 \0 的存 unicoed 的 char[] 转 CString
- 函数作为参数,在线等、
- 今天郁闷啊,24点作业和另一个作业都没通过
- 请教!怎么样删除coblist内的元素所占的内存,removeall()不行的
- 200分求解关于BCP编程的问题
- 请教 microsoft chart control (Pie):如何在饼图上显示所占的百分比!谢谢!
- 有一定VC基础,做哪些项目比较好
- VC2008中类视图和资源视图在哪里?
- 反锯齿图像旋转算法aarot中的一个小问题
- 请教这样的功能怎样实现
- 经典求教:如何自己制作一个表格,可以在表格单元格上显示图标。
- 求1本active X的电子书---ActiveX控制元件彻底研究
http://expert.csdn.net/Expert/topic/1846/1846493.xml?temp=8.666629E-02
http://expert.csdn.net/Expert/TopicView1.asp?id=1846493
CRgn rgn2;
CRgn *rgn3=NULL;
rgn1.CreateEllipticRgnIndirect(rect);
rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
CombineRgn(*rgn3,rgn1,rgn2,RGN_OR);
你的代码有错误应该是
CRgn rgn1;
CRgn rgn2;
CRgn rgn3;
rgn1.CreateEllipticRgnIndirect(rect);
rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
rgn3.CombineRgn(rgn1,rgn2,RGN_OR);