`
mizoushenjing
  • 浏览: 52879 次
  • 性别: Icon_minigender_1
  • 来自: 聊城
社区版块
存档分类
最新评论

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,如果不满足规格化要求,则对换两个值。上面介绍的大部分运算符和成员函数,只有规格化的矩形才能得到正确结果
分享到:
评论

相关推荐

    部分MFC和API函数

    CPoint类:操作CPoint和POINT结构 CRect类:封装了一个矩形区域及相关操作 CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域 CSize类:用于表示相对坐标或位置 CSpinButtonCtrl类:旋转控件Spin的...

    常用MFC和API函数.pdf

    包括CArchive类、CBitmap类、CBrush类、CButton类、CByteArray类、CCmdUI类、CColorDialog类、...CPoint类、CRect类、CRgn类、CSize类、CSpinButtonCtrl类、CStatusBar类、CString类、CStringList类、CWinApp类和CWnd类...

    常用MFC和API函数

    CPoint类:操作CPoint和POINT结构 CRect类:封装了一个矩形区域及相关操作 CRgn类:封装用于操作窗口中的椭圆、多边形或者不规则区域的GDI区域 CSize类:用于表示相对坐标或位置 CSpinButtonCtrl类:旋转控件...

    使用新的MFC7 / ATL7共享类。

    本示例演示如何使用新的共享ATL / MFC类,例如CPoint,CRect,CSize和CString。

    MFC常用的类及其成员函数简介

    CRect类 矩形类,拥有四个成员变量:top, left, bottom, right。分别表是左上角和右下角的坐标。可以通过以下的方法构造: CRect( int l, int t, int r, int b ); 指明四个坐标 CRect( const RECT& srcRect ); 由...

    摄影测量学图像内定向程序

    //定义CPoint类实体,并初始化为设备坐标 dc.DPtoLP(&local); //将设备坐标转为逻辑坐标 //将该段程序放入OnLButtonDown(UINT nFlags, CPoint point) //和OnMouseMove(UINT nFlags, CPoint point)中 //////////...

    stdafx.h代码

    stdafx.h的代码// This is a part of the Microsoft Foundation Classes C++ library. ...// All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation ... CRect ...

    Windows编程技术

    3.1 CRect、CPoint、CSize类 33 3.1.1 CRect类 33 3.1.2 CPoint类 33 3.1.3 CSize类 34 3.2 CString类 34 3.2.1 创建字符串 34 3.2.2 访问字符串数据 35 3.2.3 字符串的比较 36 3.2.4 子串函数 38 3.2.5 字符串处理...

    VC 注册表类 CRegistry

    BOOL ReadPoint(CString strName, CPoint* pPoint); BOOL ReadSize(CString strName, CSize* pSize); BOOL ReadRect(CString strName, CRect* pRect); DWORD ReadDword(CString strName, DWORD dwDefault); //...

    WTL 8.1 界面开发库

    还有查找文件的API的封装类,以及CRect, CSize and CPoint. WTL中没有什么? 没有Document支持 WTL提供了frame和view,但是没有document。WTL所关注的是用户界面,而document是不可见的,所以它不是WTL关心的范围。 ...

    C++MFC教程

    CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造: CRect( int l, int t, int r, int b ); 指明四个坐标 CRect( const RECT& srcRect )...

    MFC类库详解中文版(chm)

    CPoint atltypes.h CPrintDialog 通用打印对话框,提供Print和Print Setup对话框中的功能 afxdlgs.h CPrintInfo CProgressCtrl 通用进程指示器控件 afxcmn.h CPropertyPage 代表属性表单中的一页 afxdlgs.h ...

    XPButton控件

    DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle = TRUE, UINT nToolbarID = NULL, CSize sizeToolbarIcon = CSize(16, 16), COLORREF crToolbarBk = RGB(255, 0, 255), BOOL bRepaint = TRUE);...

Global site tag (gtag.js) - Google Analytics