| 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. |