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

  • 相关阅读:
    126
    125
    124
    123
    122
    121
    120
    119
    洛谷 P5407 【[THUPC2019]历史行程】
    济南清北学堂七日游
  • 原文地址:https://www.cnblogs.com/flyptt/p/2548041.html
Copyright © 2011-2022 走看看