橡皮筋技术,有三个过程:
1. 鼠标左键按下:记录起始点。
2. 鼠标移动:画出从起始点到现有点的直线,并删除上一条直线。
3. 鼠标左键松开:画出起始点到现有点的直线。
我是通过取反操作来进行的:
dc.SetROP2(R2_NOT);
过程一:
void Cdraw_line_rubber_band_skillView::OnMButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
flag = true;
m_ptOld = m_ptOrigin = point;
CView::OnMButtonDown(nFlags, point);
}
过程二:
void Cdraw_line_rubber_band_skillView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(flag) {
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOld = point;
CView::OnMouseMove(nFlags, point);
}
}
过程三:
void Cdraw_line_rubber_band_skillView::OnMButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
flag = false;
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnMButtonUp(nFlags, point);
}