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
首先就需要建立一个区域,例如:
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
相关文章推荐
- Linux Core dump
- 关于APUE(Advanced Programming in the Unix Environment)第三版 代码在ubuntu中的编译运行
- SOCKET中send和recv函数工作原理与注意点
- 《Java 核心技术卷一》读书笔记
- 小马哥-----山寨平板10寸 D101主板刷机拆机图与开机界面图 6572双核低配机型
- 【Spring】Spring实战(一)
- 计算机基础--Unicode码和ASCII码的关系
- 解决一bug的流程复盘
- C# 计算字符串在控制台中的显示长度
- AJAX总结
- Linux学习之查看是否安装软件
- 使用JUnit4与JMockit进行打桩测试
- C语言当中int,float,double,char
- zoj--2770--Burn the Linked Camp(差分约束)
- [那些年踩过的坑]Android5.0 新控件的一些注意点(持续更新
- zoj--2770--Burn the Linked Camp(差分约束)
- 如何设计安全的用户登录功能
- 如何改变Android Dialog弹出后的Activity背景亮度
- KVM ISO光驱管理
- 一个带动画的页面底部的TabBar的实现