Windows中Rect是一个结构体
typedef struct tagRECT
{
LONG left; //左上角
LONG top;
LONG right; //右下角
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
有关矩形的函数
(1)矩形的绘制:
FillRect() 用画刷填充一个矩形
int FillRect(
_In_ HDC hDC,
_In_ const RECT *lprc,
_In_ HBRUSH hbr
);
具体应用:
HBRUSH hBrush = CreateSolidBrush(RGB(255,0,0));
FillRect(hdc, &rect, hBrush); //填充
矩形描边:
HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
FrameRect(hdc, &rect, hBrush); //描边
矩形的放大缩小:
HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
InflateRect(&rect, 100, 100); //正数为放大,负数为缩小
矩形的平移:
HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
OffsetRect(&rect, 300, 100); //平移按照MM——TEXT模式
矩形的复制:
CopyRect(&rect2, &rect); //将rect矩形复制给rect2矩形
IntersectRect(&rect3, &rect2, &rect); //rect3为矩形rect和rect2的相交部分
矩形的合并
UnionRect(&rect3, &rect2, &rect); //将矩形rect2和rect矩形合并成大矩形赋给rect3
矩形颜色反转:
InvertRect(hdc, &rect); //例如黑色变白色,白色变黑色
BOOL PtInRect(
_In_ const RECT *lprc, //矩形区域
_In_ POINT pt //当前点
);
例子:判断鼠标是否点击矩形
case WM_LBUTTONDOWN:
{
pt.x = LOWORD(lParam); //当前鼠标位置
pt.y = HIWORD(lParam); //当前鼠标位置
if (PtInRect(&rect, pt)) { //点击检测函数
MessageBox(hWnd, TEXT("click!"),TEXT("OK"),MB_OK);
}
}break;
判断矩形是否为空矩形:
IsRectEmpty(&rect3); //返回BOOL值