几何对象的结构和类

为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类。

这些结构和类分别定义在头文件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);

 

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