MFC基于对话框写一个程序,鼠标点击拖拽画出五角星
时间: 2024-06-09 12:06:57 浏览: 202
首先,打开Visual Studio并创建一个新的MFC对话框应用程序项目。
接下来,向对话框中添加一个绘图区域。在资源视图中,双击该对话框以打开对话框编辑器。在编辑器中,单击“绘图区域”控件并将其拖放到对话框上。
然后,打开该对话框的类文件,并添加一个成员变量以保存鼠标的当前位置:
```
CPoint m_lastPoint;
```
在类的头文件中添加以下代码以声明五角星绘制函数:
```
void DrawStar(CDC* pDC, int x, int y, int r);
```
在类的cpp文件中,实现DrawStar()函数:
```
void CMyDialog::DrawStar(CDC* pDC, int x, int y, int r)
{
const double PI = 3.14159265358979323846;
const double alpha = PI / 5.0;
CPoint pt[5];
for (int i = 0; i < 5; i++)
{
pt[i].x = static_cast<int>(x + r * cos(alpha * (2 * i + 1)));
pt[i].y = static_cast<int>(y + r * sin(alpha * (2 * i + 1)));
}
pDC->Polygon(pt, 5);
}
```
最后,在响应WM_LBUTTONDOWN和WM_MOUSEMOVE消息的函数中添加以下代码:
```
void CMyDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
// 保存鼠标的当前位置
m_lastPoint = point;
CDialogEx::OnLButtonDown(nFlags, point);
}
void CMyDialog::OnMouseMove(UINT nFlags, CPoint point)
{
if (nFlags & MK_LBUTTON)
{
CDC* pDC = GetDlgItem(IDC_DRAW_AREA)->GetDC();
pDC->SetROP2(R2_NOTXORPEN);
// 擦除上一次绘制的五角星
DrawStar(pDC, m_lastPoint.x, m_lastPoint.y, 50);
// 绘制当前位置的五角星
DrawStar(pDC, point.x, point.y, 50);
m_lastPoint = point;
}
CDialogEx::OnMouseMove(nFlags, point);
}
```
现在,您可以编译并运行该程序,并在绘图区域内使用鼠标拖动以绘制五角星了!
阅读全文