CPoint,CSize,CRect類說明收藏

2021-08-23 13:00:30 字數 2693 閱讀 3198

cpoint類

類cpoint是對windows結構point的封裝,凡是能用point結構的地方都可以用cpoint代替。

結構point表示螢幕上的乙個二維點,其定義為:

typedef struct tagpoint point;

其中 x、y分別是點的橫座標和縱座標。

由於cpoint提供了一些過載運算子,使得cpoint的操作更加方便。如運算子「+」,「-」,「+=」和「-=」用於兩個cpoint物件或乙個 cpoint物件與乙個csize物件的加減運算,運算子「==」和「!=」用於比較兩個cpoint物件是否相等。

csize類

類csize是對windows結構size的封裝,凡是能用size結構的地方都可以用csize代替。

結構size表示乙個矩形的長度和寬度,其定義為:

typedef struct tagsize 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 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,如果不滿足規格化要求,則對換兩個值。上面介紹的大部分運算子和成員函式,只有規格化的矩形才能得到正確結果

CPoint,CSize,CRect類的資料

cpoint類 類cpoint是對windows結構point的封裝,凡是能用point結構的地方都可以用cpoint代替。結構point表示螢幕上的乙個二維點,其定義為 typedef struct tagpoint point 其中 x y分別是點的橫座標和縱座標。由於cpoint提供了一些過載...

部落格園功能使用說明收

隨筆的閱讀次數是如何統計的?閱讀次數統計的是閱讀人數,同乙個人的多次點選只計數一次,這樣能準確反映文章的閱讀情況,防止了故意的多次點選。隨筆與文章的區別是什麼?文章不能發布到主頁,也不能發布到個人blog首頁,只能發布在文章檔案與文章分類中。如何在發表文章時使用摘要?在高階選項 advanced o...

MFC 主類說明

1.cobject類為mfc總類,該類下面有乙個重要的類ccmdtarget。而ccmdtarget類下面又有四個重要的繼承類,分別為 cwinthread cdocument cdoctemplate cwnd 類。所以,可以得出乙個大概繼承圖,如圖所示 其中cwnd類下屬又有幾個重要的繼承類,分...