vc6中如何实现橡皮条选择(rubber banding)?
橡皮条选择就是拖动鼠标进行对象选择时,出现一个矩形虚框,常见于绘图软件,windows资源浏览器中文件的选择也是。
CRectTracker类好像不适用于存在多个对象的情况。
网上有一些C#的例子,但VC6我还找不到可供参考的代码。请各位大侠指点,最好有代码.
问题点数:50、回复次数:8Top
1 楼happyparrot(快乐鹦鹉)回复于 2005-09-01 14:43:16 得分 20
我一般不用CRectTracker。自己响应鼠标移动和点击事件绘制矩形框,每次绘制新矩形前,将原矩形用异或方式再画一遍。当矩形绘制结束后,用最后的矩形大小位置去选择对象。
Top
2 楼xiao_fang(frank)回复于 2005-09-01 15:31:08 得分 0
这个我认真想过,响应WM_LBUTTONDOWN,WM_MOVE和WM_LBUTTONUP消息:
OnLButtonDown:做上左键按下标记;
OnMouseMove:如果左键按下,按你所说的方法用异或方式画矩形虚框;
OnLButtonUp:取消左键按下标记。
没错吧?
我现在是不知道如何在鼠标移动过程中,将选择框中的对象画出带tracker的形状并刷新,请指点。
Top
3 楼xiao_fang(frank)回复于 2005-09-01 18:33:10 得分 0
自己up
Top
4 楼dirdirdir3(风)回复于 2005-09-01 19:32:43 得分 15
你判断是选中的话就刷新为选中的状态,由选中变为非选中时刷新为非选中状态。Top
5 楼teli_eurydice(哭泣的仙人掌。。。。)回复于 2005-09-01 19:36:59 得分 15
CRectTracker
自己重载再修改一下,很好用Top
6 楼xiao_fang(frank)回复于 2005-09-01 21:21:50 得分 0
to teli_eurydice(哭泣的仙人掌。。。。) :
重载CRectTracker,是可以试一下:
至少要重载HitTest,TrackRubberBand,Track。。。我先试试看。
Top
7 楼xiao_fang(frank)回复于 2005-09-02 12:30:30 得分 0
upTop
8 楼xiao_fang(frank)回复于 2005-09-22 16:07:19 得分 0
我现在已完成一个测试程序,基本实现了画图(简单矩形)、鼠标选择、拖动、改变图形大小等功能,基本可用,在此将代码贴出来,请大家指点。
同时也遇到一点问题,请大家指点:
1.双击消息不知为何被屏蔽了。
2.改变图形大小时,如果把左上角的手柄拖过右下角手柄时(所谓invert),手动过程中会留下一些橡皮线;
3.不知为何用SetPaneText不能更新状态栏?
------
简要说明:
1.鼠标四种状态:画图,选择,拖动,track(改变图形大小)
2.画图及其它鼠标形为参考powerdesigner,如点击一个按钮开始画图(OnButtonDrawRect()),右键取消
3.其它看代码,有一些注释,不清楚请跟帖。
代码马上贴出来。Top




