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