如何画橡皮筋框

ZDNet软件频道 时间:2003-11-10 作者:ZDNent China |  我要评论()
本文关键词:vbtips
很多程序都使用所谓的“橡皮筋”框或者“选择”框来选择屏幕上的区域.本文我们将通过例子告诉您在Visual Basic应用程序里模仿出这个功能所需的一些技巧。
本文译自Builder.com,未经许可请勿转载
很多程序都使用所谓的“橡皮筋”框或者“选择”框来选择屏幕上的区域,但是在你自己的Visual Basic应用程序里也模仿出这个功能需要一些代码编写上的技巧。

橡皮筋框的工作原理就像下面这样:用鼠标点中,按住鼠标键,移动鼠标,这样就会在鼠标的原始位置和当前位置之间划出一个矩形框。“橡皮筋”这个术语就是因为这个框会随着鼠标的移动增大和减小而得名。当你松开鼠标按键的时候,这个框就会保留在屏幕上。这个提示就告诉了你如何使用Visual Basic创建一个橡皮筋框。

使用Line方法在窗体或者Picture Box控件里画一个框是很容易的,但是橡皮筋这个功能需要你在鼠标移动和画新框的时候让以前的框消失。解决这个问题的方法就在DrawMode属性里。DrawMode的缺省设置会划一根实线,但是这不符合我们的要求。相反,我们会使用vbInvert这个设置,这就意味着像Line方法这样的划线操作会使用与窗体或者Picture Box控件已有颜色相反的色调。因此,如果背景色是白色,那么vbInvert就会画一条黑线,反过来也一样。调色板里的任何颜色都是这样的,这就解决了两个问题:

  • 这个框相对于背景而言总是可见的。
  • 如果我们再次这个框再画一遍,那么颜色就会再次反转,成为与原始颜色相同的值,这样窗口就不见了。

那么,方法就是下面这样的:
  1. 当用户按鼠标键的时候,鼠标当前的坐标会被记录下来。这会用于定位框的角。同时,将“drawing”标记(flag)设置为真(True)。
  2. 当鼠标移动的时候,前一个框会被重新画一次从而被删掉。这一步在第一次划框的时候是没有的,但是在后来画框都需要这一步。
  3. 当鼠标移动的时候,在鼠标起始坐标和新坐标之间画一个框。
  4. 当鼠标键被放开的时候,将“drawing”标记设置为伪(False)。

这个技术可以由下面的代码来说明。为了试验其功能,创建一个标准的EXE项目,并在窗体里放一个Picture Box控件。在Picture Box里加载你选中的图像,并将其DrawMode属性设置为6 – Invert,将其AutoRedraw属性设置为True。然后,把下面的变量声明放在窗体的模块层里:

' True if a box is being drawn.
Dim drawing As Boolean
' True if the box has just started.
Dim first As Boolean
' Previous box's mouse coordinates.
Dim oldX As Single, oldY As Single
' The box's starting coordinates.
Dim startX As Single, startY As Single


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134