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请看这里

效果图:

附件下载:点击这里下载

 标签: C++, 图形学, 橡皮筋

作者  :  sailor

仅仅看明白了还不够,能把别人给讲明白了才算及格。


  1. Ansonyi
    1#
    Ansonyi

    技术帝,俺完全看不懂!!

    June 17th, 2011 at 03:25 pm 回复
      1. sailor
        sailor

        额,这只是我们专业而已

        June 17th, 2011 at 05:58 pm 回复
  2. 小猴
    2#
    小猴

    你的效果图……到此一游

    June 17th, 2011 at 10:29 pm 回复
      1. sailor
        sailor

        怎么了,你不感觉我的图很漂亮吗?有木有!!

        June 17th, 2011 at 10:37 pm 回复
  3. 面条
    3#
    面条

    :mrgreen: 外行,不懂

    June 18th, 2011 at 08:24 am 回复
      1. sailor
        sailor

        呵呵,不学这个的一般不懂,唉,没办法,我们那狗血的专业

        June 18th, 2011 at 12:47 pm 回复
  4. C++ 不会玩呀。

    June 18th, 2011 at 04:31 pm 回复
      1. sailor
        sailor

        呵呵,C++是我们的专业必须学的课......

        June 18th, 2011 at 05:45 pm 回复
  5. Leyeang
    5#
    Leyeang

    代码用的字体是卡通字体吗》
    很有趣味啊 哈哈

    June 18th, 2011 at 04:37 pm 回复
      1. sailor
        sailor

        这是我主题默认的字体,我也不知道什么字体

        June 18th, 2011 at 05:46 pm 回复
  6. 小智
    6#
    小智

    :wink: 哇哇!我也不懂,但是知道围观!

    June 18th, 2011 at 05:10 pm 回复
      1. sailor
        sailor

        呵呵,谢谢来围观

        June 18th, 2011 at 05:46 pm 回复
  7. DH
    7#
    DH

    我的头像和你一样

    June 19th, 2011 at 04:51 pm 回复
      1. sailor
        sailor

        嗯嗯,有缘啊~~~

        June 19th, 2011 at 07:14 pm 回复
  8. 不懂vc啊,只会拿来编译或者简单修改一下。

    June 19th, 2011 at 10:13 pm 回复
      1. sailor
        sailor

        呵呵,这个是我们的破专业,唉,悲惨啊~

        June 19th, 2011 at 11:51 pm 回复
  9. 牛牛!

    June 20th, 2011 at 02:56 pm 回复
      1. sailor
        sailor

        :arrow: 这是我们的专业~~一点也不牛

        June 20th, 2011 at 05:45 pm 回复
  10. 老饕
    10#
    老饕

    被迫学过这东西~~绝对历史的尘埃!

    June 20th, 2011 at 07:33 pm 回复
      1. sailor
        sailor

        呵呵,这些东西我们必须学,也不知道学校是怎么想的

        June 20th, 2011 at 07:35 pm 回复
  11. kassol_zx
    11#
    kassol_zx

    围观一个,不错不错。。牛人啊 :grin:

    June 21st, 2011 at 12:24 am 回复
      1. sailor
        sailor

        非牛人,小鸟一个~

        June 21st, 2011 at 12:45 am 回复
  12. 老二
    12#
    老二

    :evil: 你不要这么搞人,人家实习是做题目去的,你倒好全给人家了

    June 21st, 2011 at 12:14 pm 回复
      1. sailor
        sailor

        额,没有全部给的,这只是一个演示程序,告诉他们什么是橡皮筋,但是他们的实习题目比这个要复杂的多!

        June 21st, 2011 at 12:18 pm 回复
  13. einverne
    13#
    einverne

    绘图的时候直线交叉处 白色...

    November 6th, 2012 at 11:35 pm 回复


最新文章