您的位置:首页 > 理论基础

橡皮筋算法

2013-06-04 19:29 513 查看
橡皮筋技术,有三个过程:

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

}

转自:http://blog.csdn.net/shuimu12345678/article/details/8043169
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息