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

在画图的过程中,总是会碰到颜色填充的问题,如果要填充一些规则的区域,比如椭圆、方形等,直接用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
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值