MFC中如何在不规则的区域内填充颜色

来源:互联网 发布:杰尼斯黑料 知乎 编辑:程序博客网 时间:2024/04/30 00:23
在画图的过程中,总是会碰到颜色填充的问题,如果要填充一些规则的区域,比如椭圆、方形等,直接用CDC中的FillEllipse以及FillRect很简单就可以完成,那如果是一个不规则的区域应该如何呢,这里就简单介绍一个我用到过的方法。
首先就需要建立一个区域,例如:
pDC->BeginPath();
pDC->MoveTo(250, 250);
pDC->AngleArc(250, 250, 50, 0, 60);
pDC->EndPath();
CRgn rgn;
rgn.CreateFromPath(pDC);
pDC->InvertRgn(&rgn);
此时BeginPath();EndPath();之间的部分就是所建立的不规则区域。
 
然后填充的话,可以用FillRgn这个函数来完成。这样就完成了……
 
另外,建立这个区域的时候,需要注意如果该区域是由一系列的直线构成的,则最好写成如下情况:
pDC->MoveTo(……);
pDC->LineTo(……); 
pDC->LineTo(……); 
pDC->LineTo(……);
如果写成:
pDC->MoveTo(……);
pDC->LineTo(……);   
pDC->MoveTo(……);
pDC->LineTo(……);
可能会出问题,使得该区域填充的时候无法正确填充。
 转自:http://blog.sina.com.cn/s/blog_4b9cc6db0100bbyb.html
0 0
原创粉丝点击