在改变窗口大小时 线会有残留,没有擦掉,是不是坐标改变了?
void COpencvView::OnMouseMove(UINT nFlags, CPoint point)
{
CDC *pDC=GetDC();
pDC->SetROP2(R2_NOTXORPEN);
CRect r;
GetClientRect(r);
m_point_c=m_point_a;
m_point_a.x=point.x;
m_point_a.y=0;
m_point_b.x=point.x;
m_point_b.y=r.Height();
pDC->MoveTo(m_point_a);
pDC->LineTo(m_point_b);
pDC->MoveTo(m_point_c);
pDC->LineTo(m_point_d);
m_point_d=m_point_b;
CView::OnMouseMove(nFlags, point);
}
void COpencvView::OnMouseMove(UINT nFlags, CPoint point)
{
CDC *pDC=GetDC();
pDC->SetROP2(R2_NOTXORPEN);
CRect r;
GetClientRect(r);
m_point_c=m_point_a;
m_point_a.x=point.x;
m_point_a.y=0;
m_point_b.x=point.x;
m_point_b.y=r.Height();
pDC->MoveTo(m_point_a);
pDC->LineTo(m_point_b);
pDC->MoveTo(m_point_c);
pDC->LineTo(m_point_d);
m_point_d=m_point_b;
CView::OnMouseMove(nFlags, point);
}
这是双缓冲的分析
void CCvtyView::OnDraw(CDC* pDC)
{
CCvtyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(m_point1);
pDC->LineTo(m_point2);
pDC->MoveTo(m_point1_old);
pDC->LineTo(m_point2_old);
m_point1_old=m_point1;
m_point2_old=m_point2;
ReleaseDC(pDC);
}