橡皮筋框的工作原理就像下面这样:用鼠标点中,按住鼠标键,移动鼠标,这样就会在鼠标的原始位置和当前位置之间划出一个矩形框。“橡皮筋”这个术语就是因为这个框会随着鼠标的移动增大和减小而得名。当你松开鼠标按键的时候,这个框就会保留在屏幕上。这个提示就告诉了你如何使用Visual Basic创建一个橡皮筋框。
使用Line方法在窗体或者Picture Box控件里画一个框是很容易的,但是橡皮筋这个功能需要你在鼠标移动和画新框的时候让以前的框消失。解决这个问题的方法就在DrawMode属性里。DrawMode的缺省设置会划一根实线,但是这不符合我们的要求。相反,我们会使用vbInvert这个设置,这就意味着像Line方法这样的划线操作会使用与窗体或者Picture Box控件已有颜色相反的色调。因此,如果背景色是白色,那么vbInvert就会画一条黑线,反过来也一样。调色板里的任何颜色都是这样的,这就解决了两个问题:
这个技术可以由下面的代码来说明。为了试验其功能,创建一个标准的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