CPoint,CSize,CRect類的資料

2021-05-01 14:47:52 字數 2726 閱讀 3321

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提供了一些過載...

有理數類的設計

package rational public class rational public long getnumerator public long getdenominator public rational add rational r2 public rational subtract ra...

1680 分數類的模板陣列類

封裝乙個模板陣列類array,支援一下操作 1.建構函式array int n 將陣列初始化為n個儲存空間 2.函式input int n 讀取最多n個元素,但不能超過陣列儲存空間的上限 3.過載下標運算子,返回陣列的元素。封裝乙個分數類fract,用來處理分數功能和運算,能支援你的array類使用...