基于Microsoft Visual Studio,创建一个基于MFC对话框的应用程序,请给出在***Dlg.OnPaint()函数中编写的完整C++编码,以实现功能:程序启动后,在界面上从左至右依次用不同颜色和宽度的线条绘制矩形、圆形和三角形,并能通过按钮调用绘制功能、通过文本框显示形状的长宽。 (如使用注释,请使用中文注释)
时间: 2024-03-07 12:53:12 浏览: 63
基于对话框的MFC作图程序
4星 · 用户满意度95%
以下是在***Dlg.OnPaint()函数中编写的完整C++编码,实现功能:程序启动后,在界面上从左至右依次用不同颜色和宽度的线条绘制矩形、圆形和三角形,并能通过按钮调用绘制功能、通过文本框显示形状的长宽:
```c++
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// 设置画笔颜色和宽度
CPen pen1(PS_SOLID, 20, RGB(255, 0, 0)); // 红色宽度20的画笔
CPen pen2(PS_SOLID, 10, RGB(0, 255, 0)); // 绿色宽度10的画笔
CPen pen3(PS_SOLID, 5, RGB(0, 0, 255)); // 蓝色宽度5的画笔
// 绘制矩形
dc.SelectObject(&pen1); // 选择红色宽度20的画笔
dc.Rectangle(50, 50, 150, 150); // 绘制矩形
// 绘制圆形
dc.SelectObject(&pen2); // 选择绿色宽度10的画笔
dc.Ellipse(200, 50, 300, 150); // 绘制圆形
// 绘制三角形
dc.SelectObject(&pen3); // 选择蓝色宽度5的画笔
POINT points[3] = { {350, 50}, {450, 50}, {400, 150} }; // 定义三角形顶点坐标
dc.Polygon(points, 3); // 绘制三角形
// 显示形状的长宽
CString str;
str.Format(_T("矩形:长150,宽100\n圆形:直径100\n三角形:底边长100,高100"));
m_edit.SetWindowText(str);
}
```
在对话框类中添加以下成员变量:
```c++
CEdit m_edit; // 用于显示形状的长宽的文本框控件
CButton m_btnDraw; // 用于调用绘制功能的按钮控件
```
在OnInitDialog()函数中添加以下代码:
```c++
// 创建文本框和按钮控件
m_edit.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, CRect(500, 50, 700, 200), this, IDC_EDIT);
m_btnDraw.Create(_T("绘制"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(500, 250, 600, 280), this, IDC_BUTTON_DRAW);
```
在DoDataExchange()函数中添加以下代码:
```c++
DDX_Control(pDX, IDC_EDIT, m_edit);
DDX_Control(pDX, IDC_BUTTON_DRAW, m_btnDraw);
```
在资源文件中添加一个按钮控件,ID为IDC_BUTTON_DRAW。
在响应IDC_BUTTON_DRAW按钮的WM_COMMAND消息的函数中调用OnPaint()函数:
```c++
void CMyDlg::OnBtnDraw()
{
Invalidate(); // 使对话框无效,触发OnPaint()函数
}
```
至此,完整的程序代码编写完成,程序启动后,在界面上从左至右依次用不同颜色和宽度的线条绘制矩形、圆形和三角形,并能通过按钮调用绘制功能、通过文本框显示形状的长宽。
阅读全文