矩形结构的原型:
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变量的三种方法:
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);
FillRect函数:通过掉用RECT类型变量和一个画刷句柄画出一个矩形。
FillRect( _In_ HDC hDC, _In_ CONST RECT *lprc, _In_ HBRUSH hbr);
InvertRect函数:颜色反转,将矩形的颜色反转
InvertRect(
_In_ HDC hDC,
_In_ CONST RECT *lprc);
InflateRect函数:放大和缩小矩形,当x与y轴为正的时候是放大,当x写y轴为负的时候为缩小
InflateRect( _Inout_ LPRECT lprc, _In_ int dx, _In_ int dy);
OffsetRect函数:偏移矩形,注意该函数一定要在FillRect和FrameRect函数前使用否则无效。
OffsetRect( _Inout_ LPRECT lprc, _In_ int dx, _In_ int dy);
FrameRect函数:画矩形边框,也必须要一个RECT变量和画刷句柄。
FrameRect( _In_ HDC hDC, _In_ CONST RECT *lprc, _In_ HBRUSH hbr);
CopyRect函数:将第二个RECT类型的变量拷贝到第一个RECT变量中
CopyRect(
_Out_ LPRECT lprcDst,
_In_ CONST RECT *lprcSrc);
IntersectRect函数:取得两个矩形中间相交的矩形
IntersectRect( _Out_ LPRECT lprcDst, _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2);
IntersectRect(&rect3, &rect1, &rect2);
UnionRect函数:合并两个矩形
UnionRect( _Out_ LPRECT lprcDst, _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2);
UnionRect(&rect3,&rect,&rect2); 通过rect1和rect2得到rect3
SetRectEmpty函数:将矩形lpRect设为一个空矩形(所有字段都为空)
1 SetRectEmpty( 2 _Out_ LPRECT lprc);
IsRectEmpty函数:判断一个矩形是否为空
IsRectEmpty(
_In_ CONST RECT *lprc);
FillRect函数:判断鼠标是否在矩形中
PtInRect( _In_ CONST RECT *lprc, _In_ POINT pt);
实例
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;