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,如果不滿足規格化要求,則對換兩個值。上面介紹的大部分運算符和成員函數,只有規格化的矩形才能得到正確結果
發佈了21 篇原創文章 · 獲贊 2 · 訪問量 1783
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章