橡皮筋画直线c 语言,MFC橡皮筋画线实现
时间: 2023-12-10 08:41:17 浏览: 82
以下是一个简单的橡皮筋画线实现示例:
```c++
// 在头文件中声明以下变量
CPoint m_ptFrom; // 起点
CPoint m_ptTo; // 终点
BOOL m_bDraw; // 是否正在绘制
// 在鼠标按下事件中添加以下代码
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptFrom = point;
m_ptTo = point;
m_bDraw = TRUE;
SetCapture();
}
// 在鼠标移动事件中添加以下代码
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bDraw)
{
CDC* pDC = GetDC();
pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(m_ptFrom);
pDC->LineTo(m_ptTo);
m_ptTo = point;
pDC->MoveTo(m_ptFrom);
pDC->LineTo(m_ptTo);
ReleaseDC(pDC);
}
}
// 在鼠标释放事件中添加以下代码
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_bDraw)
{
ReleaseCapture();
m_bDraw = FALSE;
CDC* pDC = GetDC();
pDC->SetROP2(R2_COPYPEN);
pDC->MoveTo(m_ptFrom);
pDC->LineTo(m_ptTo);
ReleaseDC(pDC);
}
}
```
这段代码使用MFC的CDC类来绘制直线,同时使用鼠标事件来控制直线的绘制。在鼠标按下事件中,记录起点和终点并将绘制标志设置为TRUE。在鼠标移动事件中,使用SetROP2函数设置绘图模式为R2_NOTXORPEN,这意味着绘制的直线将被绘制为黑色或白色的交替线。然后使用MoveTo和LineTo函数绘制直线。最后,在鼠标释放事件中,释放绘制标志并使用SetROP2函数将绘图模式设置为R2_COPYPEN,这意味着绘制的直线将被绘制为正常颜色。
阅读全文