列子是这样的:
用APPwizard产生的应用程序中,在客户区画直线:
怎么OnMouseMove是这样的:
void CHelloView::OnMouseMove(UINT nFlags,CPoint point)
{
  CHelloDoc* pDoc=GetDocument();
  CClientDC dc(this);
  dc.SetROP2(R2_NOT);
  if pDoc->m_isdrag!=1 return False;
  //擦
  dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
  dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
  //重置结束点
  pDoc->m_endpt=point;
  //画
  dc.MoveTo(pDoc->m_startpt.x,pDoc->m_startpt.y);
  dc.LineTo(pDoc->m_endpt.x,pDoc->m_endpt.y);
}我将擦部分的code删掉,虽然程序调试还是没问题,但是效果就是不行,画圆的时候有很多黑色的点。我想在拖动mouse的时候,这段code肯定是不停循环执行的,那么,擦和画不是完全一样的吗?为什么我将擦部分的删除就不行???请教各位大虾!!!

解决方案 »

  1.   

    LineTo 在同一个位置上画第二次就是将前一次的线条擦除。
    程序中可能是要鼠标再点一下才真正将线定下来吧?所以在鼠标移动的时候既要显示一条线跟着鼠标,而鼠标移走后又要将它擦掉。所以在上一次onMouseMove中画好的线若不要的话,在下一次onMouseMove中就该擦除了。
      

  2.   

    擦只是表面意思
    m_startpt.x,m_startpt.y,m_endpt.x,m_endpt.y就是一条线
    后面还有个重置点的设置,再后面又是与上相同的一段代码,我想不管你删除
    的是前面的擦还是后面的画,结果应该是相同的