VC学习:CPoint,CSize,CRect类说明
CPoint类
类CPoint是对Windows结构POINT的封装,凡是能用POINT结构的地方都可以用CPoint代替。
结构POINT表示屏幕上的一个二维点,其定义为:
typedef struct tagPOINT{
LONG x;
LONG y;
} POINT;
其中 x、y分别是点的横坐标和纵坐标。
由于CPoint提供了一些重载运算符,使得CPoint的操作更加方便。如运算符“+”,“-”,“+=”和“-=”用于两个CPoint对象或一个CPoint对象与一个CSize对象的加减运算,运算符“==”和“!=”用于比较两个CPoint对象是否相等。
CSize类
类CSize是对Windows结构SIZE的封装,凡是能用SIZE结构的地方都可以用CSize代替。
结构SIZE表示一个矩形的长度和宽度,其定义为:
typedef struct tagSIZE{
LONG cx;
LONG cy;
} SIZE;
其中 cx、cy分别是长度和宽度。
与CPoint类似,CSize也提供了一些重载运算符。如运算符“+”,“-”,“+=”和“-=”,用于两个CSize对象或一个CSize对象与一个CPoint对象的加减运算,运算符“==”和“!=”用于比较两个CSize对象是否相等。
由于CPoint和CSize都包含两个整数类型的成员变量,他们可以进行相互操作。CPoint对象的操作可以以CSize对象为参数。同样,CSize对象的操作也可以以CPoint对象为参数。如可以用一个CPoint对象构造一个CSize对象,也可以用一个CSize对象构造一个CPoint对象,允许一个CPoint对象和一个CSize对象进行加减运算。
CRect类
类CRect是对Windows结构RECT的封装,凡是能用RECT结构的地方都可以用CRect代替。
结构RECT表示一个矩形的位置和尺寸,其定义为:
typedef struct tagRECT{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
其中 left、top分别表示矩形左上角顶点的横坐标和纵坐标,right、bottom分别表示矩形右下角顶点的横坐标和纵坐标。
由于CRect提供了一些成员函数和重载运算符,使得CRect的操作更加方便。
1.CRect的构造函数
CRect有如下6个构造函数:
CRect( );
CRect( int l, int t, int r, int b );
CRect( const RECT& srcRect );
CRect( LPCRECT lpSrcRect );
CRect( POINT point, SIZE size );
CRect( POINT topLeft, POINT bottomRight );
说明:分别以不同的方式构造CRect对象,参数l,t,r,b分别指定矩形的左边、上边、右边和底边。SrcRect是一个RECT结构的引用。LpSrcRect是一个指向RECT结构的指针。Point指定矩形的左上角顶点的坐标,size指定矩形的长度和宽度。topLeft指定矩形的左上角顶点的坐标,bottomRight指定矩形的右下角顶点的坐标。
2.CRect重载运算符
CRect重载的运算符包括:赋值运算符、比较运算符、算术运算符、交并运算符等。
赋值运算符“=”实现CRect对象间的拷贝。
比较运算符“==”和“!=”比较两个CRect对象是否相等(四个成员都相等时,两个对象才相等)。
算术运算符包括“+=”、“-=”、“+”、“-”,他们的第一个操作数是CRect对象,第二个操作数可以是POINT、SIZE或RECT。当第二个操作数是POINT或SIZE时,“+”和“+=”的运算结果使CRect矩形向x轴和y轴的正方向移动POINT或SIZE指定的大小。“-”和“-=”的运算结果则使CRect矩形向x轴和y轴的负方向移动POINT或SIZE指定的大小。当第二个操作数是RECT时,“+”和“+=”的运算结果使CRect矩形的左上角顶点向左上方向移动RECT前两个成员指定的大小,而CRect矩形的右下角顶点向右下方向移动RECT后两个成员指定的大小。“-”和“-=”的运算结果则使CRect矩形的左上角顶点向右下方向移动RECT前两个成员指定的大小,而CRect矩形的右下角顶点向左上方向移动RECT后两个成员指定的大小。
运算符“&”和“&=”得到两个矩形的交集(两个矩形的公共部分),运算符“|”和“|=”得到两个矩形并集(包含两个矩形的最小矩形)。
3.CRect其他常用成员函数
(1)Width( ) :得到矩形的宽度;
(2)Height( ):得到矩形的高度;
(3)Size( ):得到矩形的大小(高度和宽度);
(4)TopLeft( ):得到矩形左上角顶点坐标;
(5)BottomRight( ) :得到矩形右下角顶点坐标;
(6)PtInRect( ):判断一个点是否在矩形内,如是返回真,否则返回假。原形如下:
BOOL PtInRect( POINT point ) const;
(7)IsRectEmpty( ):判断矩形是否为空(高度和宽度都是0);
(8)IsRectNull( ):判断矩形是否为0(左上角和右下角坐标都是0);
(9)SetRect( ):设置矩形四个成员变量的值。
4.CRect的规格化
一个规格化的矩形是指他的高度和宽度都是正值,即矩形的右边大于矩形的左边,矩形的底边大于矩形的上边。矩形的规格化函数是NormalizeRect(),该函数比较矩形的的left和right及top和bottom,如果不满足规格化要求,则对换两个值。上面介绍的大部分运算符和成员函数,只有规格化的矩形才能得到正确结果.
文章引用自:http://hi.baidu.com/kofeffect/blog/item/a0408b380e06f5f6b211c702.html
VC学习:CPoint,CSize,CRect类说明相关推荐
- [转]CPoint+CSize+CRect学习大纲
CPoint+CSize+CRect学习大纲. 熟知CPoint.CSize.CRect类的基类 class CPoint : public tagPOINT class CSize : public ...
- VC++----CRect类
这个类是从tagRECT结构派生而来的.(tagRECT是RECT结构的不太常用的别名.)这意味着RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员. ...
- VC中的CRect类
CRect类基本介绍 //本文来自http://baike.baidu.com/view/2406388.htm CRect类是MFC的常用类,十分基础,故整理出来以供新手参考. 我用金山快译查了一下 ...
- VC++ CRect类说明
这个类是从tagRECT结构派生而来的.(tagRECT是RECT结构的不太常用的别名.)这意味着RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员. ...
- VC++入门经典学习笔记--结构和类
1.自定义数据类型 C++中的结构:结构是使用关键字struct定义的用户定义类型.结构起源于C语言,C++继承并扩展了结构.C++中的结构在功能上可以由类代替,因为任何使用结构能够做到的事情都可以使 ...
- VC++中使用使用winnet类获取网页内容
2005-09-01 VC++中使用使用winnet类获取网页内容 - [VC专栏] 微软提供的Winnet类是一个应用层的网络通信组件, 它可以使你的应用程序很容易的实现http.ftp.gophe ...
- VC学习笔记:文本图形
VC学习笔记:文本图形 SkySeraph OCT.30th 2010 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Dat ...
- VC学习笔记:简单绘图
VC学习笔记:简单绘图 SkySeraph Oct.29th 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date ...
- VC学习笔记 -单选按钮控件(Ridio Button)的使用
在VC++编程过程中,查资料是一个苦差事,案边放了一摞书左翻右翻好是烦人.一赌气就把一些常用的小技巧自己总结了一下,虽费了些功夫,但对以后编程很有好处.现拿出来与大家共享,以后积累多了,作一个CHM电 ...
最新文章
- linux mysql 统一字符编码
- 阿里安全图灵实验室再次刷新世界顶级算法比赛成绩
- ASP.NET获取任意网页HTML代码
- 探索感染了COVID-19的动物的数据
- css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...
- Web自动化测试中使用groovy实现页面的对象化
- 如何 shuffle 一个 vector 以及 vectorvector
- 【Python实例第31讲】递归的特征消除法
- springweb 初步理解
- java手机视频下载_使用JAVA合并哔哩哔哩手机客户端下载的视频
- 计算机上显示找不到无线网络连接,笔记本没有无线网络连接怎么办 解决方法介绍【图解】...
- XP系统清理优化工具箱
- python 特征选择卡方_文本特征选择(信息熵、Gini、IV、卡方值)
- 移动App性能测试包含哪些内容?App性能测试工具有哪些?
- 数字黑洞水仙花数6174卡普耶卡变换,卡布列卡常数归敛
- P R MAP简单理解,yolo中
- 大龄程序员的前途在哪里?
- 【错误记录】手机应用无法联网 ( 添加 READ_PRIVILEGED_PHONE_STATE 权限导致手机应用网络不可用 )
- 盈亏计算html,外汇交易中如何计算盈亏? -
- Office宏——打印PPT