您的位置:首页 > 其它

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

2016-01-09 18:39 330 查看
在画图的过程中,总是会碰到颜色填充的问题,如果要填充一些规则的区域,比如椭圆、方形等,直接用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: