基于Microsoft Visual Studio,创建一个基于MFC对话框的应用程序,请给出在***Dlg.OnPaint()函数中编写的完整C++编码,以实现功能:程序启动后,在界面上从左至右依次用不同颜色和宽度的线条绘制矩形、圆形和三角形,并能通过一个按钮实现清空界面重新绘制上述图形的功能。 (如使用注释,请使用中文注释)
时间: 2024-03-10 17:44:56 浏览: 66
好的,下面是完整的C++编码:
```
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
// 从左至右依次绘制矩形、圆形和三角形
// 绘制矩形
CRect rect1(10, 10, 100, 100); // 定义矩形的位置和大小
CBrush brush1(RGB(255, 0, 0)); // 定义矩形的颜色为红色
dc.SelectObject(&brush1); // 选择画刷对象
dc.Rectangle(rect1); // 绘制矩形
// 绘制圆形
CRect rect2(120, 10, 210, 100); // 定义圆形的位置和大小
CBrush brush2(RGB(0, 255, 0)); // 定义圆形的颜色为绿色
dc.SelectObject(&brush2); // 选择画刷对象
dc.Ellipse(rect2); // 绘制圆形
// 绘制三角形
CPoint point1(230, 10); // 定义三角形的第一个点
CPoint point2(280, 100); // 定义三角形的第二个点
CPoint point3(330, 10); // 定义三角形的第三个点
CBrush brush3(RGB(0, 0, 255)); // 定义三角形的颜色为蓝色
dc.SelectObject(&brush3); // 选择画刷对象
dc.MoveTo(point1); // 移动画笔到第一个点
dc.LineTo(point2); // 画线到第二个点
dc.LineTo(point3); // 画线到第三个点
dc.LineTo(point1); // 画线回到第一个点,形成闭合的三角形
}
void CMyDlg::OnBnClickedClear()
{
// TODO: Add your control notification handler code here
// 清空界面重新绘制图形
Invalidate(); // 使窗口的客户区无效,触发OnPaint()函数重新绘制图形
}
```
在OnPaint()函数中,我们使用CPaintDC类创建一个设备上下文对象,然后依次绘制矩形、圆形和三角形,并设置不同的颜色和宽度。在OnBnClickedClear()函数中,我们使用Invalidate()函数使窗口的客户区无效,从而触发OnPaint()函数重新绘制图形,实现清空界面重新绘制图形的功能。
阅读全文