MFC 动态画线 擦除前一次画的线 .... ....怎么解决啊。。。
我是在OnMouseMove()函数中添加了MoveTo()和LinTo()画线函数,也实现了动态画线,但是不能擦除前一次画线,导致屏幕上有好多的线,并且背景不是纯色,如...
我是在OnMouseMove()函数中添加了 MoveTo()和LinTo()画线函数,也实现了动态画线,但是不能擦除前一次画线,导致屏幕上有好多的线,并且背景不是纯色,如果是纯色我还可以把它画回去,实现擦除的样子....而现在的效果是下图那样......该怎么解决啊。。。。
我重载了OnPaint()函数 但是还是有上次画的线.... 求解决啊.......谢谢了。。。。
还有啊,当我把窗口最小化后再打开 原来画的所有线都没了......我想我如果能实现 最小化窗口类似的功能多好啊......
能不能说说思路或者要用到什么函数啊...... 展开
我重载了OnPaint()函数 但是还是有上次画的线.... 求解决啊.......谢谢了。。。。
还有啊,当我把窗口最小化后再打开 原来画的所有线都没了......我想我如果能实现 最小化窗口类似的功能多好啊......
能不能说说思路或者要用到什么函数啊...... 展开
展开全部
复制一段画橡皮线的代码给你看看
void CMy2DCADView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
if(m_bIsPoint)
{
dc.Ellipse(point.x-1,point.y-1,point.x+1,point.y+1);
}
if(m_bIsLine)
{
if(m_nStep==0)
{
m_StartX=point.x;
m_StartY=point.y;
m_nStep++;
}
else
{
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(point.x,point.y);
m_StartX=point.x;
m_StartY=point.y;
}
}
CView::OnLButtonDown(nFlags, point);
}
void CMy2DCADView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.SetROP2(R2_NOT ); //设置绘图混合模式。
if(m_bIsLine)
{
if(m_nStep!=0)
{
if(m_MoveStep==0) //m_MoveStep 表示画橡皮线步骤的变量
{
m_mEndX=point.x;
m_mEndY=point.y;
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX,m_mEndY);
m_MoveStep++;
}
else
{
m_mEndX1=point.x;
m_mEndY1=point.y;
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX,m_mEndY);
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX1,m_mEndY1);
m_mEndX=m_mEndX1;
m_mEndY=m_mEndY1;
}
}
}
CView::OnMouseMove(nFlags, point);
}
void CMy2DCADView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
if(m_bIsPoint)
{
dc.Ellipse(point.x-1,point.y-1,point.x+1,point.y+1);
}
if(m_bIsLine)
{
if(m_nStep==0)
{
m_StartX=point.x;
m_StartY=point.y;
m_nStep++;
}
else
{
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(point.x,point.y);
m_StartX=point.x;
m_StartY=point.y;
}
}
CView::OnLButtonDown(nFlags, point);
}
void CMy2DCADView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.SetROP2(R2_NOT ); //设置绘图混合模式。
if(m_bIsLine)
{
if(m_nStep!=0)
{
if(m_MoveStep==0) //m_MoveStep 表示画橡皮线步骤的变量
{
m_mEndX=point.x;
m_mEndY=point.y;
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX,m_mEndY);
m_MoveStep++;
}
else
{
m_mEndX1=point.x;
m_mEndY1=point.y;
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX,m_mEndY);
dc.MoveTo(m_StartX,m_StartY);
dc.LineTo(m_mEndX1,m_mEndY1);
m_mEndX=m_mEndX1;
m_mEndY=m_mEndY1;
}
}
}
CView::OnMouseMove(nFlags, point);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
造成这个现象很明显是由于没有刷新导致,否则不会最小化后就可以,可能你的代码中重载了OnEraseBack这个函数导致
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询