幾何對象的結構和類

爲了使用繪圖函數,應該先了解繪圖所用到的幾種表示幾何對象的結構和類。

這些結構和類分別定義在頭文件windef.h和afxwin.h中。

==========================================================================

  • 點結構POINT
    點數據結構POINT用來表示一點的x、y座標:
    typedef struct tagPOINT
    {
        LONG x;
        LONG y;
    }POINT;

 

  • 點類CPoint
    點類CPoint爲一個沒有基類的獨立類,封裝了POINT結構,有成員變量x和y,其構造函數有5種:
    CPoint( );
    CPoint( int initX, int initY );
    CPoint( POINT initPt );
    CPoint( SIZE initSize );
    CPoint( LPARAM dwPoint ); // 低字設爲x、高字設爲y
    CPoint類還定義了4個平移和設置函數:
    void Offset(int xOffset, int yOffset);
    void Offset(POINT point);
    void Offset(SIZE size);
    void SetPoint(int X, int Y);
    CPoint類還重載了+、-、+=、-=、==、!=等運算符來支持CPoint對象和CPoint、POINT、SIZE對象之間的運算。

==========================================================================

  • 大小
  • 大小結構SIZE
    大小(size尺寸)結構SIZE用來表示矩形的寬cx和高cy:
    typedef struct tagSIZE
    {
        LONG cx;
        LONG cy;
    } SIZE;
  • 大小類CSize
    大小類CSize也爲一個沒有基類的獨立類,封裝了SIZE結構,有成員變量cx和cy,其構造函數也有5種:
    CSize( );
    CSize( int initCX, int initCY );
    CSize( SIZE initSize );
    CSize( POINT initPt );
    CSize( DWORD dwSize ); // 低字設爲cx、高字設爲cy
    CSizet類也重載了+、-、+=、-=、==、!=等運算符來支持CSize對象和CSize、POINT、SIZE、RECT對象之間的運算。

 

==========================================================================

  • 矩形
  • 矩形結構RECT
    矩形結構RECT定義了矩形的左上角與右下角的座標:
    typedef struct tagRECT
    {
       LONG left;
       LONG top;
       LONG right;
       LONG bottom;
    } RECT;

 

  • 矩形類CRect
    矩形類CRect也爲一個沒有基類的獨立類,封裝了RECT結構,有成員變量left、top、right和bottom,其構造函數有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類重載了=,+、-,+=、-=,==、!=,&、|,&=、|=等運算符來支持CRect對象和CRect、POINT、SIZE、RECT對象之間的運算。還定義了轉換符LPCRECT和LPRECT來自動完成CRect對象到矩形結構和類指針LPCRECT和LPRECT的轉換。

CRect類中常用的屬性和成員函數有:

int Width( ) const;
int Height( ) const;
CSize Size( ) const;
CPoint& TopLeft( );
CPoint& BottomRight( );
CPoint CenterPoint( ) const;
void SwapLeftRight();
BOOL IsRectEmpty( ) const;
BOOL PtInRect( POINT point ) const;
void SetRect( int x1, int y1, int x2, int y2 );
void SetRect(POINT topLeft, POINT bottomRight);
void OffsetRect(int x, int y);
void MoveToXY(int x, int y);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章