How to Create Rubber-Band Lines/Boxes in Visual BasicLast reviewed: May 16, 1996Article ID: Q71488 |
The information in this article applies to:
SUMMARYCreating rubber bands within Visual Basic can be done using the DrawMode property. Rubber bands are lines that stretch as you move the mouse cursor from a specified point to a new location. This can be very useful in graphics programs and when defining sections of the screen for clipping routines.
MORE INFORMATIONThe theory of drawing a rubber-band box is as follows:
The sample below will demonstrate the rubber-band line and the rubber-band box. Clicking the command buttons will allow the user to select between rubber-band line or a rubber-band box. The user will also be able to select a solid line or a dashed line. Create and set the following controls and properties:
Control Name Caption Picture ------------------------------------------------ Form1 Form1 c:\windows\chess.bmp Command1 RubberBand Command2 RubberBox Command3 Dotted Command4 SolidIn the general section of your code, define the following constants:
Const INVERSE = 6 '*Characteristic of DrawMode property(XOR). Const SOLID = 0 '*Characteristic of DrawStyle property. Const DOT = 2 '*Characteristic of DrawStyle property.Const TRUE = -1 Const FALSE = 0 Dim DrawBox As Integer '*Boolean-whether drawing Box or Line Dim OldX, OldY, StartX, StartY As Single '* Mouse locations In the appropriate procedures, add the following code:
Sub Form_MouseDown (Button As Integer, Shift As Integer, X As
Single, Y As Single)
'* Store the initial start of the line to draw.
StartX = X
StartY = Y
'* Make the last location equal the starting location
OldX = StartX
OldY = StartY
End Sub
Sub Form_MouseMove (Button As Integer, Shift As Integer, X As
Single, Y As Single)
'* If the button is depressed then...
If Button Then
'* Erase the previous line.
Call DrawLine(StartX, StartY, OldX, OldY)
'* Draw the new line.
Call DrawLine(StartX, StartY, X, Y)
'* Save the coordinates for the next call.
OldX = X
OldY = Y
End If
End Sub
Sub DrawLine (X1, Y1, X2, Y2 As Single)
'* Save the current mode so that you can reset it on
'* exit from this sub routine. Not needed in the sample
'* but would need it if you are not sure what the
'* DrawMode was on entry to this procedure.
SavedMode% = DrawMode
'* Set to XOR
DrawMode = INVERSE
'*Draw a box or line
If DrawBox Then
Line (X1, Y1)-(X2, Y2), , B
Else
Line (X1, Y1)-(X2, Y2)
End If
'* Reset the DrawMode
DrawMode = SavedMode%
End Sub
Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single,
Y As Single)
'* Stop drawing lines/boxes.
StartEvent = FALSE
End Sub
Sub Command2_Click ()
'* Boolean value to determine whether to draw a line or box.
DrawBox = TRUE
End Sub
Sub Command1_Click ()
'* Boolean value to determine whether to draw a line or box.
DrawBox = FALSE
End Sub
Sub Command3_Click ()
'* Create a dotted line
Form1.DrawStyle = DOT
End Sub
Sub Command4_Click ()
'* Create a solid line.
Form1.DrawStyle = SOLID
End Sub
|
Additional reference words: 1.00 2.00 3.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |