VC mfc单击出现圆
时间: 2023-08-16 07:05:08 浏览: 205
VC上机测试.zip_MFC上机_mfc ondraw画圆_mfc 画圆 on_pendvc_画圆
您可以在 MFC 应用程序中使用 CDC 类来绘制圆形。以下是一个简单的示例:
1. 打开您的 MFC 应用程序项目,打开您想要在其中添加圆形绘图的对话框。
2. 右键单击对话框,选择“添加类”。
3. 在“添加类”对话框中,选择“对话框”作为基类,并输入类名称和文件名。单击“添加类”按钮。
4. 打开您的新类的头文件 (.h),添加以下代码:
```cpp
CPoint m_center;
int m_radius;
```
5. 打开您的新类的源文件 (.cpp),添加以下代码:
```cpp
void CMyDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
// 记录圆心
m_center = point;
CClientDC dc(this);
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // 红色笔
dc.SelectObject(&pen);
dc.SetROP2(R2_NOTXORPEN); // 取反模式
m_radius = 0;
dc.Ellipse(m_center.x - m_radius, m_center.y - m_radius,
m_center.x + m_radius, m_center.y + m_radius);
CDialogEx::OnLButtonDown(nFlags, point);
}
void CMyDialog::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // 红色笔
dc.SelectObject(&pen);
dc.SetROP2(R2_NOTXORPEN); // 取反模式
dc.Ellipse(m_center.x - m_radius, m_center.y - m_radius,
m_center.x + m_radius, m_center.y + m_radius);
m_radius = (int)sqrt(pow(point.x - m_center.x, 2) + pow(point.y - m_center.y, 2));
dc.Ellipse(m_center.x - m_radius, m_center.y - m_radius,
m_center.x + m_radius, m_center.y + m_radius);
CDialogEx::OnMouseMove(nFlags, point);
}
void CMyDialog::OnLButtonUp(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // 红色笔
dc.SelectObject(&pen);
dc.SetROP2(R2_COPYPEN); // 正常模式
dc.Ellipse(m_center.x - m_radius, m_center.y - m_radius,
m_center.x + m_radius, m_center.y + m_radius);
CDialogEx::OnLButtonUp(nFlags, point);
}
```
6. 在您的对话框类头文件 (.h) 中添加以下代码:
```cpp
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
```
7. 在您的对话框类实现文件 (.cpp) 中添加以下代码:
```cpp
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()
```
现在,您可以编译并运行您的应用程序,然后在对话框上单击并拖动鼠标以绘制圆形。
阅读全文