MFC实现橡皮筋画线(附带源码)
前几天一个学妹问我一个关于她们实习的问题,其中的一个是说实现橡皮筋画线,当时给她讲了,感觉讲的不是蛮清楚,这里就以一个简单实例实现橡皮筋画线。所用环境: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请看这里
效果图:
附件下载:点击这里下载
技术帝,俺完全看不懂!!
额,这只是我们专业而已
你的效果图……到此一游
怎么了,你不感觉我的图很漂亮吗?有木有!!
:mrgreen: 外行,不懂
呵呵,不学这个的一般不懂,唉,没办法,我们那狗血的专业
C++ 不会玩呀。
呵呵,C++是我们的专业必须学的课......
代码用的字体是卡通字体吗》
很有趣味啊 哈哈
这是我主题默认的字体,我也不知道什么字体
:wink: 哇哇!我也不懂,但是知道围观!
呵呵,谢谢来围观
我的头像和你一样
嗯嗯,有缘啊~~~
不懂vc啊,只会拿来编译或者简单修改一下。
呵呵,这个是我们的破专业,唉,悲惨啊~
牛牛!
:arrow: 这是我们的专业~~一点也不牛
被迫学过这东西~~绝对历史的尘埃!
呵呵,这些东西我们必须学,也不知道学校是怎么想的
围观一个,不错不错。。牛人啊 :grin:
非牛人,小鸟一个~
:evil: 你不要这么搞人,人家实习是做题目去的,你倒好全给人家了
额,没有全部给的,这只是一个演示程序,告诉他们什么是橡皮筋,但是他们的实习题目比这个要复杂的多!
绘图的时候直线交叉处 白色...