利用橡皮筋类进行图片区域选取和操作

利用橡皮筋类进行图片区域选取和操作

 

1、  利用橡皮筋类进行图片区域选取和操作

2、  实现:

1)声明橡皮筋类变量并初始化

将橡皮筋类变量声明为View类的成员变量,并在View类的构造函数中进行初始化。

 

  1. class CShowPicture_256View : public CView  
  2. {  
  3. //***  
  4.   
  5. public:  
  6.     /*  
  7.     *   橡皮筋  
  8.     *   2010-09-25  
  9.     */  
  10.     CRectTracker m_rectTracker;  
  11.   
  12. //***  
  13. };  
  14.   
  15. CShowPicture_256View::CShowPicture_256View()  
  16. {  
  17.     // TODO: add construction code here  
  18.     /*  
  19.     *   初始化橡皮筋  
  20.     *   2010-09-25  
  21.     */  
  22.     m_rectTracker.m_nStyle = CRectTracker::resizeInside | CRectTracker::dottedLine;  
  23. }  
 

 

 

注意:m_rectTracker.m_nStyle置为CRectTracker::dottedLine,鼠标释放后线框才会不消失。

 

2)OnLButtonDown消息函数中利用橡皮筋类进行区域选择

 

 

  1. void CShowPicture_256View::OnLButtonDown(UINT nFlags, CPoint point)   
  2. {  
  3.     // TODO: Add your message handler code here and/or call default  
  4.   
  5.     Invalidate(true); //窗口重绘,使上一次所画的线框消失,这样客户区始终  
  6.                       //只有一个线框  
  7.   
  8.       
  9.     //利用橡皮筋类进行区域选择  
  10.     CClientDC dc(this);  
  11.     m_rectTracker.TrackRubberBand( this, point, TRUE );  
  12.     m_rectTracker.Draw( &dc );  
  13.       
  14.   
  15.     CView::OnLButtonDown(nFlags, point);  
  16. }  
 

 

 

3)利用m_rectTracker.m_rect记录的坐标对所选择的区域进行操作

 

  1. for(i = m_rectTracker.m_rect.left-10; i < m_rectTracker.m_rect.right-10; i++ )  
  2.         for(j = nheigth-(m_rectTracker.m_rect.bottom-10); j < nheigth-(m_rectTracker.m_rect.top-10); j++ )  
  3.         {  
  4.             tempPos = j*nwidth + i;  
  5.             lpbits[tempPos] = 255 - lpbits[tempPos];  
  6.         }  
 

 

 

这里对所选择区域的图像进行反色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值