mfc橡皮筋技术哦亲~

橡皮筋技术,有三个过程:

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);
}


你可能感兴趣的:(mfc橡皮筋技术哦亲~)