MFC鼠标绘制圆形实现
本代码示例展示了如何在VC6.0 MFC工程中使用鼠标绘制圆形。程序逻辑清晰简洁,适合MFC初学者理解学习。
核心功能:
- 鼠标事件捕获:程序监听鼠标点击和移动事件。
- 圆形绘制算法:根据鼠标起始点和结束点计算圆心和半径,调用GDI函数绘制圆形。
- MFC绘图机制:利用CDC类进行图形绘制操作。
代码示例:
// ... 省略头文件和类定义 ...
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
// 记录鼠标按下时的坐标
m_startPoint = point;
// 设置绘制开始标志
m_bDrawing = TRUE;
CView::OnLButtonDown(nFlags, point);
}
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
// 鼠标移动且正在绘制
if ((nFlags & MK_LBUTTON) && m_bDrawing)
{
// 获取设备上下文
CClientDC dc(this);
// 构造画笔
CPen pen(PS_SOLID, 1, RGB(0, 0, 0));
// 选择画笔
CPen* pOldPen = dc.SelectObject(&pen);
// 计算圆心和半径
CPoint center = (m_startPoint + point) / 2;
int radius = static_cast(m_startPoint.DistanceTo(point) / 2);
// 绘制圆形
dc.Ellipse(center.x - radius, center.y - radius,
center.x + radius, center.y + radius);
// 恢复设备上下文
dc.SelectObject(pOldPen);
}
CView::OnMouseMove(nFlags, point);
}
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
// 鼠标抬起,结束绘制
m_bDrawing = FALSE;
CView::OnLButtonUp(nFlags, point);
}
使用方法:
- 在VC6.0中创建一个MFC单文档应用程序。
- 将上述代码添加到视图类的对应函数中。
- 编译运行程序,在视图窗口中点击并拖动鼠标即可绘制圆形。
2.27MB
文件大小:
评论区