爲了使用繪圖函數,應該先了解繪圖所用到的幾種表示幾何對象的結構和類。
這些結構和類分別定義在頭文件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);