关于橡皮筋类的复习

CRectTracker(俗称“橡皮筋”类)它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用.

http://dev.csdn.net/htmls/7/7001.html

这篇blog详细的介绍了,该类的使用。

 

使用该类首先需要初始化其一些成员:

1.CRectTracker::m_rect

   指明初始化矩形的大小

2.CRectTracker::m_nStyle

   说明矩形的风格

   其风格有如下:

   

  • CRectTracker::solidLine  实线.
  • CRectTracker::dottedLine   虚线,其和实线不能同时使用.
  • CRectTracker::hatchedBorder   边界带抛面线.
  • CRectTracker::resizeInside  矩形内部画线.
  • CRectTracker::resizeOutside   矩形外部画线.
  • CRectTracker::hatchInside   内部带抛面线.

是使用过程中可以在先建立CRectTracker 的对象如m_Trect;再在初始化函数中设定,初始矩形的大小和风格如构造函数中

剩下的主要是操作界面中的二个消息响应函数分别是

 

OnSetCursor函数主要是改变光标在m_Trect区域内的形状

  

 

OnLButtonDown主要是矩形的一些动作其中一些很重要的函数就是:

CRectTracker::NormalizeHit,该函数起规则化作用,即用鼠标画一个虚线框。

CRectTracker::HitTest,该函数将返回,鼠标现相对矩形的位置

返回值

代表的含义

-1

点在了四边形的外部

0

左上角

1

右上角

2

右下角

3

左下角(0,1,2,3顺时针转了一圈)

4

顶部

5

右部

6

底部

7

左部(还是顺时针转了一圈)

8

点在了四边形的内部,但没有击中前面的那八个点

CRectTracker::Track,该函数将时时改变矩形的大小

BOOL Track( CWnd* pWnd, //包含矩形的窗口对象。
            CPoint point,//当前鼠标位置相对于客户区的鼠标坐标。 
            BOOL bAllowInvert = FALSE,//如果此参数为TRUE,则矩形可沿x轴,或y轴反转;否则,此参数为FALSE
            CWnd* pWndClipTo = NULL//绘制操作将要被剪贴到的窗口。如果该参数为NULL,则pWnd用作剪贴矩形。 
          );

 

 

CRectTracker::GetTrueRect

void GetTrueRect( LPRECT lpTrueRect ) const; 用于返回,m_Trect现在的大小及位置,用于重绘

 

下面的代码是上面blog牛人写的代码

 

 

CRectTracker::TrackRubberBand

BOOL TrackRubberBand( CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE );

编译运行,当你按下鼠标并拖动,你将看到效果了。
我们如何让鼠标画一个“橡皮筋”区域呢? 在CRectTracker类中的成员函数就是:TrackRubberBand(this,point,TRUE); 注意其中的三个参数:
第一个参数,画“橡皮筋”的窗体的指针,当然是this
第二个参数,画“橡皮筋”的起始点。
让我们注意第三个参数,它非常有意思。当你使用 FALSE时(TRUE 值是缺省的),你的“橡皮筋”只能从左上到右下的画,不允许反向。编译运行一下FALSE这个值。
特别值得注意的是:在TrackRubberBand的过程中是以右键的抬起为结束的,这其间并没有CView的MouseMove发生。这一点一定要记住!

 

CRectTracker::Draw

void Draw( CDC* pDC ) const;该函数将真正画出矩形框,如果调用该函数,那么m_Trect将不会被汇出。如果只需要画一个矩形虐内部的椭圆,则用GetTrueRect获取区域后绘出椭圆即可,无需将m_Trect绘出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值