首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC中实现一个图片的裁剪有关问题。实际下不止这个有关问题

2012-09-06 
MFC中实现一个图片的裁剪问题。。实际上不止这个问题网上找了不少的资料。。无奈小菜一个要么干脆看不懂要么就

MFC中实现一个图片的裁剪问题。。实际上不止这个问题
网上找了不少的资料。。无奈小菜一个 要么干脆看不懂 要么就是感觉莫名其妙。。
  搞的最后都不知道自己该干嘛。。。还是懂的东西太少了。。


上图是刚做的一个相片采集的小软件。。。由于一些类从来没接触过 真的是历尽千辛。。
  不过 目前也已经可以连接上摄像头,实时视频到窗口,并且定格当前帧作为拍摄结果。。以及保存相片。
实际这样已经达到老板要求的“先随便搞个出来练练手”的目的了。。但是仍想继续学下。
  对了 这里有个地方。。当时为了拓展能够实现类似于CSDN上传照片那样的裁剪框的效果。。
就需要定格住图片并且裁剪。。。想不到办法的情况下。。我用了个很笨的办法:
 直接将视频窗口关闭,并且在原位置把一个隐藏的PICTURE空间显示出来 并且SetBitmap();。。。
如果大家有什么号的方法。。还希望不吝赐教。。


 上面的都是废话。。
现在我需要实现的就是一个裁剪的问题。。
  看过不少类似的内容。。
 大概是说什么 橡皮筋技术获得一个矩形框。。然后保存 等等等等。。。
另外还一大堆的OnLButtonDown,OnLButtonUp,OnMouseMove函数

  这些有的我看的懂。。但是就是不知道如何下手。。
具体情况是这样的:
1:上图也看到了 有个“相片裁剪”的按钮,我就是要这个按钮点击后,在大图片那里产生一个矩形虚线框,并且可以自己拖动长宽,双击虚线框后显示为小图片(旁边的缩略图);
2:这个橡皮筋技术我也看了半天了。。。发现每一个发表相关内容的都是上来就贴一堆的OnLButtonDown,OnLButtonUp,OnMouseMove函数实现,问题是,这些函数不都是保留函数么?重写么?写到哪?又如何用呢?
噢我知道消息函数WM_MOUSEMOVE之类的。。但我真的不知道怎么用。。

例如,有这么一段代码:

C/C++ code
void CGraphic1View::OnMouseMove(UINT nFlags, CPoint point) {        if(MK_LBUTTON == nFlags)    {        CClientDC dc(this);        int oldmode=dc.SetROP2(R2_NOTXORPEN);        CPen pen(m_nLineStyle, m_nLineWidth, m_clr), *oldpen;        oldpen = dc.SelectObject(&pen);        dc.MoveTo(m_ptOrigin);        dc.LineTo(m_ptEnd);        m_ptEnd=point;        dc.MoveTo(m_ptOrigin);        dc.LineTo(m_ptEnd);        dc.SelectObject(oldpen);        dc.SetROP2(oldmode);        ReleaseDC(&dc);    }    CScrollView::OnMouseMove(nFlags, point);}



但是其中的 m_ptOrigin,m_ptEnd 是什么呢? 我看的出来是Point,但是这2个变量什么时候钻出来的我就不明白了?
  所以,如果有耐心的高手,看到该帖,就帮助下我这个小菜吧。。真是菜的,,见鬼了

[解决办法]
这个还真不是两句话能说清。拖动画框都是通过响应这三个消息来实现的,默认是什么都不做,所以你要重写才能实现你的功能。
OnLButtonDown:开始画框了,此时要记录m_ptOrigin,建立标志表示进入画图状态。
OnMouseMove:根据标志判断是否在拖动。SetCapture,显示当前框的范围。不推荐用nFlag判断
OnLButtonUp:画完。记录m_ptEnd,进行实际操作。

热点排行