RECT矩形

矩形结构的原型:

1 typedef struct tagRECT
2 {
3     LONG    left;
4     LONG    top;
5     LONG    right;
6     LONG    bottom;
7 } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
RECT定义

设置RECT变量的三种方法:

1、

RECT rect = {100,100, 300,200};

2、注意这里的坐标系统,并不是左右配对,上下配对。

RECT rect;

rect.left = 100;
rect.top = 100;
rect.right = 200;
rect.bottom = 200;

3、掉用SetRect函数:

SetRect(
    _Out_ LPRECT lprc,
    _In_ int xLeft,
    _In_ int yTop,
    _In_ int xRight,
    _In_ int yBottom);
SetRect定义

 FillRect函数:通过掉用RECT类型变量和一个画刷句柄画出一个矩形。

FillRect(
    _In_ HDC hDC,
    _In_ CONST RECT *lprc,
    _In_ HBRUSH hbr);
FillRect定义

InvertRect函数:颜色反转,将矩形的颜色反转

InvertRect(
    _In_ HDC hDC,
    _In_ CONST RECT *lprc);
InvertRect定义

InflateRect函数:放大和缩小矩形,当x与y轴为正的时候是放大,当x写y轴为负的时候为缩小

InflateRect(
    _Inout_ LPRECT lprc,
    _In_ int dx,
    _In_ int dy);
InflateRect定义

 OffsetRect函数:偏移矩形,注意该函数一定要在FillRect和FrameRect函数前使用否则无效。

OffsetRect(
    _Inout_ LPRECT lprc,
    _In_ int dx,
    _In_ int dy);
OffsetRect定义

FrameRect函数:画矩形边框,也必须要一个RECT变量和画刷句柄。

FrameRect(
    _In_ HDC hDC,
    _In_ CONST RECT *lprc,
    _In_ HBRUSH hbr);
FrameRect定义

CopyRect函数:将第二个RECT类型的变量拷贝到第一个RECT变量中

CopyRect(
    _Out_ LPRECT lprcDst,
    _In_ CONST RECT *lprcSrc);
CopyRect定义

 IntersectRect函数:取得两个矩形中间相交的矩形

IntersectRect(
    _Out_ LPRECT lprcDst,
    _In_ CONST RECT *lprcSrc1,
    _In_ CONST RECT *lprcSrc2);
IntersectRect定义

IntersectRect(&rect3, &rect1, &rect2);

UnionRect函数:合并两个矩形

UnionRect(
    _Out_ LPRECT lprcDst,
    _In_ CONST RECT *lprcSrc1,
    _In_ CONST RECT *lprcSrc2);
UnionRect定义

 UnionRect(&rect3,&rect,&rect2);  通过rect1和rect2得到rect3

SetRectEmpty函数:将矩形lpRect设为一个空矩形(所有字段都为空)

1 SetRectEmpty(
2     _Out_ LPRECT lprc);
SetRectEmpty定义

IsRectEmpty函数:判断一个矩形是否为空

IsRectEmpty(
    _In_ CONST RECT *lprc);
IsRectEmpty定义

FillRect函数:判断鼠标是否在矩形中

PtInRect(
    _In_ CONST RECT *lprc,
    _In_ POINT pt);
PtInRect定义

实例

RECT rect = {0,0, 100,100};

case WM_LBUTTONDOWN:
        POINT apt;
        apt.x = LOWORD(lParam);
        apt.y = HIWORD(lParam);

        if(PtInRect(&rect, apt))
        {
            MessageBox(hWnd, TEXT("在矩形上!"), TEXT("消息"), MB_OK);
        }
        else
        {
            MessageBox(hWnd, TEXT("不在矩形上!"), TEXT("消息"), MB_OK);
        }
        break;
原文地址:https://www.cnblogs.com/2016Study/p/5430517.html