windows绘图-区域CRgn

来源:互联网 发布:千里眼远程监控软件 编辑:程序博客网 时间:2024/05/17 02:14

MFC区域 CRgn

概念简介:

区域是一个抽象的概念,它也是绘图对象,但它并不像画笔,画刷那样好理解,我的理解是:它是一个长方形或者椭圆或者其他多边形的一个图像显示的集合。它最大的特点是区域之间可以进行逻辑运算,就像数学中集合之间的运算一样(与或非等)。区域进行逻辑运算之后再进行显示,可以出现特殊的效果。

使用步骤:

   2.1 创建区域

     CreateRectRgn             //创建矩形区域

     CreateEllipticRgn                  //创建椭圆区域

     ...

   2.2 区域进行逻辑运算

     CRgn::CombineRgn

   2.3 绘制区域

     CDC::FillRgn

     CDC::FrameRgn

代码示例:

<span style="white-space:pre"></span>//创建区域CRgn rgn1;rgn1.CreateEllipticRgn(50, 50, 250, 250);//创建一个圆形区域CRgn rgn2;rgn2.CreateRectRgn(25, 75, 300, 100);//创建一个矩形区域//区域运算rgn1.CombineRgn(&rgn1, &rgn2, RGN_DIFF);//两个区域进行逻辑运算//绘制区域CClientDC dc( this );CBrush brush1( HS_DIAGCROSS, RGB( 100, 100, 100 ) );dc.FillRgn( &rgn1, &brush1 );//填充绘制CBrush brush2( RGB( 0, 0, 255 ) );dc.FrameRgn(&rgn1, &brush2, 2, 2);//边框绘制//释放资源rgn1.DeleteObject();rgn2.DeleteObject();brush1.DeleteObject();brush2.DeleteObject();

效果展示:

区域可以实现不规则窗口的程序,这里不再多介绍

CRgn类简介

CRgn
CObject
└CGdiObject
└CRgn
调用CRgn的成员函数就可以创建,修改和检取关于此区域对象的信息。
#include <afxwin.h>
CRgn类成员
Construction
CRgn
构造一个CRgn对象
Initialization
CreateRectRgn
用一个矩形区域来初始化一个CRgn对象CreateRectRgnIndirect用由一个RECT结构定义的矩形区域来初始化一个CRgn对象CreateEllipticRgn用一个椭圆形区域来初始化一个CRgn对象CreateEllipticRgnIndirect用由一个RECT结构定义的椭圆形区域来初始化一个CRgn对象CreatePolygonRgn用一个多边形区域来初始化一个CRgn对象。如果有必要,系统通过在第一个顶点和最后一个顶点之间绘制直线来自动关闭该多边形CreatePolyPolygonRgn用一系列封闭的多边形组成的区域来初始化一个CRgn对象。这些多边形可能互不相交或相互重叠CreateRoundRectRgn用一个圆角的矩形区域来初始化一个CRgn对象CombineRgn设置一个CRgn对象,使它等效于两个指定的CRgn对象的联合CopyRgn设置一个CRgn对象,使它为一个指定的CRgn对象的拷贝CreateFromPath从被选入给定设备环境的路径创建一个区域CreateFromData根据给定的区域和变换数据创建一个区域
Operations
EqualRgn
检查两个CRgn对象,确定它们是否相等FromHandle当给定了一个Windows区域的句柄时返回指向一个CRgn对象的指针GetRegionData用描述给定区域的数据来填充指定的缓冲区GetRgnBox检取一个CRgn对象的限定矩形的坐标OffsetRgn用指定的偏移量移动一个CRgn对象PtInRegion确定一个指定的点是否在区域内RectInRegion确定一个指定矩形的任何部分是否都在区域的边界内SetRectRgn将CRgn对象设置为指定的矩形区域
Operators
operator HRGN
返回包含在CRgn对象中的Windows句柄



1 0
原创粉丝点击