VC学习:CPoint,CSize,CRect类说明
CPoint類
類CPoint是對Windows結(jié)構(gòu)POINT的封裝,凡是能用POINT結(jié)構(gòu)的地方都可以用CPoint代替。
結(jié)構(gòu)POINT表示屏幕上的一個二維點,其定義為:
typedef struct tagPOINT{
LONG x;
LONG y;
} POINT;
????????????????? 其中 x、y分別是點的橫坐標和縱坐標。
???????????????????? 由于CPoint提供了一些重載運算符,使得CPoint的操作更加方便。如運算符“+”,“-”,“+=”和“-=”用于兩個CPoint對象或一個CPoint對象與一個CSize對象的加減運算,運算符“==”和“!=”用于比較兩個CPoint對象是否相等。?
CSize類
類CSize是對Windows結(jié)構(gòu)SIZE的封裝,凡是能用SIZE結(jié)構(gòu)的地方都可以用CSize代替。
結(jié)構(gòu)SIZE表示一個矩形的長度和寬度,其定義為:
typedef struct tagSIZE{
LONG cx;
LONG cy;
} SIZE;
其中 cx、cy分別是長度和寬度。
與CPoint類似,CSize也提供了一些重載運算符。如運算符“+”,“-”,“+=”和“-=”,用于兩個CSize對象或一個CSize對象與一個CPoint對象的加減運算,運算符“==”和“!=”用于比較兩個CSize對象是否相等。
由于CPoint和CSize都包含兩個整數(shù)類型的成員變量,他們可以進行相互操作。CPoint對象的操作可以以CSize對象為參數(shù)。同樣,CSize對象的操作也可以以CPoint對象為參數(shù)。如可以用一個CPoint對象構(gòu)造一個CSize對象,也可以用一個CSize對象構(gòu)造一個CPoint對象,允許一個CPoint對象和一個CSize對象進行加減運算。
CRect類
類CRect是對Windows結(jié)構(gòu)RECT的封裝,凡是能用RECT結(jié)構(gòu)的地方都可以用CRect代替。
結(jié)構(gòu)RECT表示一個矩形的位置和尺寸,其定義為:
typedef struct tagRECT{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
其中 left、top分別表示矩形左上角頂點的橫坐標和縱坐標,right、bottom分別表示矩形右下角頂點的橫坐標和縱坐標。
由于CRect提供了一些成員函數(shù)和重載運算符,使得CRect的操作更加方便。
1.CRect的構(gòu)造函數(shù)
CRect有如下6個構(gòu)造函數(shù):
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 );
說明:分別以不同的方式構(gòu)造CRect對象,參數(shù)l,t,r,b分別指定矩形的左邊、上邊、右邊和底邊。SrcRect是一個RECT結(jié)構(gòu)的引用。LpSrcRect是一個指向RECT結(jié)構(gòu)的指針。Point指定矩形的左上角頂點的坐標,size指定矩形的長度和寬度。topLeft指定矩形的左上角頂點的坐標,bottomRight指定矩形的右下角頂點的坐標。
2.CRect重載運算符
CRect重載的運算符包括:賦值運算符、比較運算符、算術(shù)運算符、交并運算符等。
賦值運算符“=”實現(xiàn)CRect對象間的拷貝。
比較運算符“==”和“!=”比較兩個CRect對象是否相等(四個成員都相等時,兩個對象才相等)。
算術(shù)運算符包括“+=”、“-=”、“+”、“-”,他們的第一個操作數(shù)是CRect對象,第二個操作數(shù)可以是POINT、SIZE或RECT。當?shù)诙€操作數(shù)是POINT或SIZE時,“+”和“+=”的運算結(jié)果使CRect矩形向x軸和y軸的正方向移動POINT或SIZE指定的大小。“-”和“-=”的運算結(jié)果則使CRect矩形向x軸和y軸的負方向移動POINT或SIZE指定的大小。當?shù)诙€操作數(shù)是RECT時,“+”和“+=”的運算結(jié)果使CRect矩形的左上角頂點向左上方向移動RECT前兩個成員指定的大小,而CRect矩形的右下角頂點向右下方向移動RECT后兩個成員指定的大小。“-”和“-=”的運算結(jié)果則使CRect矩形的左上角頂點向右下方向移動RECT前兩個成員指定的大小,而CRect矩形的右下角頂點向左上方向移動RECT后兩個成員指定的大小。
運算符“&”和“&=”得到兩個矩形的交集(兩個矩形的公共部分),運算符“|”和“|=”得到兩個矩形并集(包含兩個矩形的最小矩形)。
3.CRect其他常用成員函數(shù)
(1)Width( ) :得到矩形的寬度;
(2)Height( ):得到矩形的高度;
(3)Size( ):得到矩形的大小(高度和寬度);
(4)TopLeft( ):得到矩形左上角頂點坐標;
(5)BottomRight( ) :得到矩形右下角頂點坐標;
(6)PtInRect( ):判斷一個點是否在矩形內(nèi),如是返回真,否則返回假。原形如下:
BOOL PtInRect( POINT point ) const;
(7)IsRectEmpty( ):判斷矩形是否為空(高度和寬度都是0);
(8)IsRectNull( ):判斷矩形是否為0(左上角和右下角坐標都是0);
(9)SetRect( ):設(shè)置矩形四個成員變量的值。
4.CRect的規(guī)格化
一個規(guī)格化的矩形是指他的高度和寬度都是正值,即矩形的右邊大于矩形的左邊,矩形的底邊大于矩形的上邊。矩形的規(guī)格化函數(shù)是NormalizeRect(),該函數(shù)比較矩形的的left和right及top和bottom,如果不滿足規(guī)格化要求,則對換兩個值。上面介紹的大部分運算符和成員函數(shù),只有規(guī)格化的矩形才能得到正確結(jié)果.
文章引用自:http://hi.baidu.com/kofeffect/blog/item/a0408b380e06f5f6b211c702.html
總結(jié)
以上是生活随笔為你收集整理的VC学习:CPoint,CSize,CRect类说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。