荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: 2.6 多边形和剪贴区域
发信站: 荔园晨风BBS站 (Wed May 30 01:13:54 2001), 转信

2.6 多边形和剪贴区域
多边形也是一个GDI对象,同样遵守其他GDI对象的规则,只是通常都不将其选入DC中。
在MFC中多边形有CRgn表示。多边形用来表示一个不同与矩形的区域,和矩形具有相似的
操作。如:检测某点是否在内部,并操作等。此外还得到一个包含此多边形的最小矩形
。下面介绍一下多边形类的成员函数:

CreateRectRgn 由矩形创建一个多边形
CreateEllipticRgn 由椭圆创建一个多边形
CreatePolygonRgn 创建一个有多个点围成的多边形
PtInRegion 某点是否在内部
CombineRgn 两个多边形相并
EqualRgn 两个多边形是否相等

    在本节中讲演多边形的意义在于重新在窗口中作图时提高效率。因为引发窗口重绘的原
因是某个区域失效,而失效的区域用多边形来表示。假设窗口大小为500*400当上方的另
一个窗口从(0,0,10,10)移动到(20,20,30,30)这时(0,0,10,10)区域就失效了,而你只需
要重绘这部分区域而不是所有区域,这样你程序的执行效率就会提高。
通过调用API函数int GetClipRgn( HDC hdc, HRGN hrgn)就可以得到失效区域,但是一
般用不着那么精确而只需得到包含该区域的最小矩形就可以了,所以可以利用int CDC:
:GetClipBox( LPRECT lpRect )完成这一功能。

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店