(3)在WM_PAINT消息处理中,当bstatus为 TRUE时,绘制一个矩形,其左上角在(10, 10)处,右下角在(150, 100)处。要求矩形框为虚线,线宽为1.矩形边框颜色为黑色 内部填充色为(100, 167, 201) 当bStatus 为FALSE时,绘制一条直线段,要求线段为 实线,宽度为2个像素,颜色为淡蓝色(132, 129. 255)。线段端点为(0, 0)和(100, 100)
时间: 2024-02-24 12:54:49 浏览: 19
好的,根据您的问题描述,我可以给您提供以下的代码片段,供您参考:
```c++
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
if (bStatus) // 绘制矩形
{
// 画笔样式为虚线,线宽为1,颜色为黑色
HPEN hPen = CreatePen(PS_DASH, 1, RGB(0, 0, 0));
HPEN hOldPen = (HPEN)SelectObject(hdc, hPen);
// 设置填充色
HBRUSH hBrush = CreateSolidBrush(RGB(100, 167, 201));
HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
// 绘制矩形
Rectangle(hdc, 10, 10, 150, 100);
// 恢复画笔和填充色
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
SelectObject(hdc, hOldBrush);
DeleteObject(hBrush);
}
else // 绘制直线段
{
// 画笔样式为实线,线宽为2,颜色为淡蓝色
HPEN hPen = CreatePen(PS_SOLID, 2, RGB(132, 129, 255));
HPEN hOldPen = (HPEN)SelectObject(hdc, hPen);
// 绘制直线段
MoveToEx(hdc, 0, 0, NULL);
LineTo(hdc, 100, 100);
// 恢复画笔
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
}
EndPaint(hWnd, &ps);
}
break;
```
这段代码会在窗口的`WM_PAINT`消息处理函数中,根据`bStatus`的值决定绘制矩形或直线段。如果`bStatus`为`TRUE`,则绘制一个左上角坐标为(10, 10),右下角坐标为(150, 100)的矩形,矩形边框为虚线,线宽为1,边框颜色为黑色,内部填充色为(100, 167, 201)。如果`bStatus`为`FALSE`,则绘制一条端点为(0, 0)和(100, 100),线宽为2,颜色为淡蓝色的直线段。