VC 绘图 鼠标移动绘制直线,怎样覆盖以前的直线?
在VC中绘图时,OnLButtonUp(UINTnFlags,CPointpoint)得到m_ptPrev=point点。OnMouseMove(UINTnFlags,C...
在VC中绘图时,
OnLButtonUp(UINT nFlags, CPoint point)得到m_ptPrev=point点。
OnMouseMove(UINT nFlags, CPoint point) 得到当前m_point=point点
CClientDC dc(this);
dc.Moveto(m_ptPrev);dc.Lineto(m_point);鼠标移动时,会有大量的直线,我只想保留当前的鼠标移动直线,请问怎么实现?据说用dc.SetROP2 (R2_XORPEN);怎么用? 展开
OnLButtonUp(UINT nFlags, CPoint point)得到m_ptPrev=point点。
OnMouseMove(UINT nFlags, CPoint point) 得到当前m_point=point点
CClientDC dc(this);
dc.Moveto(m_ptPrev);dc.Lineto(m_point);鼠标移动时,会有大量的直线,我只想保留当前的鼠标移动直线,请问怎么实现?据说用dc.SetROP2 (R2_XORPEN);怎么用? 展开
展开全部
画线时,用R2_XORPEN模式,先画一遍上次的直线,再画一次当前的直线
例如:
OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptPrev = point;
m_point = point;
//....
}
OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
int nOldDrawMode = dc.SetROP2(R2_XORPEN);
//擦除原先直线
dc.MoveTo(m_ptPrev);
dc.LineTo(m_point);
m_point = point;
//绘制新直线
dc.MoveTo(m_ptPrev);
dc.LineTo(m_point);
pDC->SetROP2(nOldDrawMode);
//其他代码略...
}
例如:
OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptPrev = point;
m_point = point;
//....
}
OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
int nOldDrawMode = dc.SetROP2(R2_XORPEN);
//擦除原先直线
dc.MoveTo(m_ptPrev);
dc.LineTo(m_point);
m_point = point;
//绘制新直线
dc.MoveTo(m_ptPrev);
dc.LineTo(m_point);
pDC->SetROP2(nOldDrawMode);
//其他代码略...
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询