闻心阁

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

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

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

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

效果图:

附件下载:点击这里下载

25 条评论

  1. Ansonyi
    技术帝,俺完全看不懂!!
    1. Sailor 博主
      额,这只是我们专业而已
  2. 小猴
    你的效果图……到此一游
    1. Sailor 博主
      怎么了,你不感觉我的图很漂亮吗?有木有!!
  3. 面条
    😆 外行,不懂
    1. Sailor 博主
      呵呵,不学这个的一般不懂,唉,没办法,我们那狗血的专业
  4. 骑行者
    C++ 不会玩呀。
    1. Sailor 博主
      呵呵,C++是我们的专业必须学的课......
  5. Leyeang
    代码用的字体是卡通字体吗》
    很有趣味啊 哈哈
    1. Sailor 博主
      这是我主题默认的字体,我也不知道什么字体
  6. 小智
    😉 哇哇!我也不懂,但是知道围观!
    1. Sailor 博主
      呵呵,谢谢来围观
  7. DH
    我的头像和你一样
    1. Sailor 博主
      嗯嗯,有缘啊~~~
  8. zwwooooo
    不懂vc啊,只会拿来编译或者简单修改一下。
    1. Sailor 博主
      呵呵,这个是我们的破专业,唉,悲惨啊~
  9. licb博客
    牛牛!
    1. Sailor 博主
      ➡️ 这是我们的专业~~一点也不牛
  10. 老饕
    被迫学过这东西~~绝对历史的尘埃!
    1. Sailor 博主
      呵呵,这些东西我们必须学,也不知道学校是怎么想的
  11. kassol_zx
    围观一个,不错不错。。牛人啊 😁
    1. Sailor 博主
      非牛人,小鸟一个~
  12. 老二
    😈 你不要这么搞人,人家实习是做题目去的,你倒好全给人家了
    1. Sailor 博主
      额,没有全部给的,这只是一个演示程序,告诉他们什么是橡皮筋,但是他们的实习题目比这个要复杂的多!
  13. einverne
    绘图的时候直线交叉处 白色...
总结一下这几天 垃圾评论之牢骚&解决