MFC常用数据类型类:CRect/CPoint/CSize

1. CRect类

CRect 是用于表示矩形区域。这个类提供了许多方法和操作符来操作矩形的尺寸和位置。下面是一些 CRect 类中常用的方法和特性:

构造函数

  1. CRect(): 创建一个空的矩形(所有坐标都为0)。
  2. CRect(int l, int t, int r, int b): 使用指定的左、上、右、下坐标创建一个矩形。
  3. CRect(const RECT& srcRect): 从一个 RECT 结构创建一个 CRect 对象。
  4. CRect(POINT topLeft, POINT bottomRight): 使用两个 POINT 对象(分别表示左上角和右下角)创建一个矩形。
  5. CRect(const CRect& srcRect): 复制构造函数。

成员函数

  1. void SetRect(int l, int t, int r, int b): 设置矩形的左、上、右、下坐标。
  2. void SetRectEmpty(): 将矩形设置为空(所有坐标都为0)。
  3. void CopyRect(LPCRECT lpSrcRect): 从一个 RECT 结构复制坐标到 CRect。
  4. int Width() const: 返回矩形的宽度(right - left)。
  5. int Height() const: 返回矩形的高度(bottom - top)。
  6. CSize Size() const: 返回一个 CSize 对象,表示矩形的宽度和高度。
  7. CPoint& TopLeft(): 返回对矩形左上角坐标的引用,允许修改。
  8. CPoint& BottomRight(): 返回对矩形右下角坐标的引用,允许修改。
  9. CPoint CenterPoint() const: 返回矩形中心点的坐标。
  10. void OffsetRect(int x, int y): 将矩形向x和y方向移动指定的距离。
  11. void InflateRect(int x, int y): 增大或减小矩形的尺寸。
  12. void NormalizeRect(): 确保 left 小于 right,top 小于 bottom。
  13. BOOL PtInRect(POINT point) const: 判断给定的点是否在矩形内部。
  14. BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2): 判断两个矩形是否相交,并返回它们的交集(如果相交)。
  15. BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2): 计算两个矩形的并集。
  16. void SubtractRect(LPCRECT lpRectSrc, LPCRECT lpRectSubtract): 从一个矩形中减去另一个矩形。

操作符

  1. BOOL operator==(const CRect& rect) const: 判断两个矩形是否相等。
  2. BOOL operator!=(const CRect& rect) const: 判断两个矩形是否不相等。
  3. CRect& operator=(const RECT& srcRect): 从 RECT 结构赋值给 CRect。
  4. CRect& operator=(const CRect& srcRect): 复制赋值操作符。
  5. CRect& operator+=(POINT point): 将矩形向给定点移动。
  6. CRect& operator+=(SIZE size): 调整矩形的大小。
  7. CRect& operator-=(POINT point): 将矩形向给定点的反方向移动。
  8. CRect& operator-=(SIZE size): 减小矩形的大小。
  9. CRect operator+(POINT point) const: 返回一个新的矩形,它是原矩形向给定点移动后的结果。
  10. CRect operator-(POINT point) const: 返回一个新的矩形,它是原矩形向给定点反方向移动后的结果。
  11. CRect operator+(SIZE size) const: 返回一个新的矩形,它是原矩形调整大小后的结果。
  12. CRect operator-(SIZE size) const: 返回一个新的矩形,它是原矩形减小大小后的结果。

2. CPoint类

在Microsoft Foundation Classes (MFC) 库中,CPoint 是一个用于表示二维坐标的类。它通常用于图形编程中,以指定屏幕或窗口上的点。CPoint 类包含两个成员变量:x 和 y,分别表示点的横坐标和纵坐标。
CPoint 类提供了多种构造函数和成员函数,以便您方便地创建和操作点对象。

2.1 构造函数:

  1. CPoint(): 创建一个初始化为 (0, 0) 的点。
  2. CPoint(int initX, int initY): 创建一个初始化为指定坐标的点。

2.2 成员函数与数据

  1. int x 和 int y: 这两个是公有成员变量,可以直接访问以获取或设置点的坐标。
  2. void Offset(int dx, int dy): 将点的坐标增加指定的偏移量。
  3. void SetPoint(int x, int y): 设置点的坐标。
  4. void SetX(int x) 和 void SetY(int y): 分别设置点的横坐标和纵坐标。
  5. int GetX() const 和 int GetY() const: 分别获取点的横坐标和纵坐标。

2.3 运算符重载

  1. 加法 (+) 和减法 (-):可以将两个 CPoint 对象相加或相减,结果是一个新的 CPoint 对象,其坐标是对应坐标的和或差。
  2. 赋值 (=):可以将一个 CPoint 对象的值赋给另一个 CPoint 对象。
  3. 相等 (==) 和不等 (!=):可以比较两个 CPoint 对象是否相等或不等。
    在MFC图形编程中,CPoint 经常与 CSize(表示宽度和高度的类)和 CRect(表示矩形的类)一起使用,以进行各种坐标计算和图形操作。

3. CSize

在Microsoft Foundation Classes (MFC)库中,CSize类用于表示一个矩形的尺寸或大小,即宽度和高度。CSize类是对Windows结构SIZE的封装,因此,在MFC中,凡是能使用SIZE结构的地方,都可以用CSize类来代替。

typedef struct tagSIZE {
    LONG cx;  // 宽度
    LONG cy;  // 高度
} SIZE;

// MFC中CSize的类似定义(可能包含更多成员和方法)
class CSize {
public:
    LONG cx;  // 宽度
    LONG cy;  // 高度

    // 构造函数、运算符重载、方法等...
};

CSize类提供了一些重载的运算符,如“+”,“-”,“+=”和“-=”等,这些运算符允许两个CSize对象之间,或者一个CSize对象与一个CPoint对象之间的加减运算1。例如,你可以使用这些运算符来合并或调整矩形的尺寸。

此外,CSize类的对象也可以与CPoint类的对象进行相互操作,因为两者都包含两个整数类型的成员变量(cx和cy对应CPoint的x和y)。这意味着你可以用一个CPoint对象构造一个CSize对象,反之亦然,或者允许一个CPoint对象和一个CSize对象进行加减运算。

在MFC编程中,CSize类常用于与窗口、图形绘制和布局相关的操作。例如,你可以使用CSize类来获取或设置窗口的大小,或者在进行图形绘制时指定矩形的尺寸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值