闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

MFC实现橡皮筋画线(附带源码)

2011-06-17 约 1 分钟读完 搬砖秘籍

前几天一个学妹问我一个关于她们实习的问题,其中的一个是说实现橡皮筋画线,当时给她讲了,感觉讲的不是蛮清楚,这里就以一个简单实例实现橡皮筋画线。所用环境:vc6,MFC。

实现这个其实并不是很难,关键在于两点——用户交互和橡皮筋技术

下面是实现过程。

int isPress=0;

CPoint start;

CPoint end;

将上述代码放在View.cpp里面的开头部分(只要能在View.cpp里面起控制全局的作用就行,例如放在#endif后面)

在***View.cpp里面用添加类向导将单击鼠标左键,鼠标移动和放开鼠标左键映射为相应的函数。并且添加以下代码

void CXiangpijinView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

isPress=1;

start=point;

end=start;

CView::OnLButtonDown(nFlags, point);

}

void CXiangpijinView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CDC *pDC=this->GetWindowDC();

if (isPress)

{

pDC->SetROP2(R2_NOT);

pDC->MoveTo(start);

pDC->LineTo(end);

pDC->MoveTo(start);

pDC->LineTo(point);

end=point;

}

CView::OnMouseMove(nFlags, point);

}

void CXiangpijinView::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

isPress=0;

CView::OnLButtonUp(nFlags, point);

}

运行一下,就可以实现基本的橡皮筋画直线了,什么?不能重绘,这个自己想办法~

还有什么问题可以留言,或者点击我博客右边的q我一下!还有关于SetROP2请看这里

效果图:

附件下载:点击这里下载