ProgramasVb6
  Line
 

 Método Line :

 

Con este método podemos dibujar Líneas y rectángulos en un objeto donde se permita utilizar dicho método, como por ejemplo en los Formularios, los controles PictureBox, el objeto Printer.

Los parámetros de Line son:

El_Objeto.Line (X1, Y1) - ( X2, Y2), El_Color, BF

 

Donde El_Objeto es donde vamos a dibujar.

Los primeros dos parámetros son las coordenadas para X e Y, luego el color de la línea y por último el parámetro BF al igual que el color, es un parámetro de tipo opcional, y aquí podemos pasar como valor: B o BF o ningún valor

Si pasamos B, se dibujará un rectángulo sin relleno. Si pasamos BF el rectángulo tendrá de relleno el color especificado en el parámetro Color. Si no pasamos nada se dibuja una línea

Ejemplos:

Lo siguiente dibuja una línea de color Azul en el formulario:

 

Me.ScaleMode = vbPixels
Me.Line (10, 10)-(100, 100), vbBlue

 

 

Como se ve en el ejemplo anterior, los valores que tomará y utilizará LINE para las coordenadas X e Y, serán los establecidos en el ScaleMode del Objeto donde dibujar, en este caso se colocó en Pixeles ( vbPixels )

 

Este otro dibuja una línea horizontal y otra vertical a lo ancho y alto del Formulario, al mover el puntero del mouse. A la primer línea se le aplica el color verde, a la la línea horizontal el color Rojo, utilizando las constantes de color de vb. ( VbgGreen y VbRed )

 

vista del gráfico de ejemplo para dibujar con LINE, una linea a lo ancho y alto del formulario al mover el cursor del mouse

 

Option Explicit

Private Sub Form_MouseMove(Button As Integer, _
                           Shift As Integer, _
                           X As Single, _
                           Y As Single)
    
    ' Limpia el Form
    Cls
    
    'Dibuja la línea vertical
    Line (X, ScaleTop)-(X, ScaleHeight), vbGreen
    
    'Dibuja la línea Horizontal
    Line (Me.ScaleLeft, Y)-(Me.ScaleWidth, Y), vbRed
    
End Sub 

 

En este otro ejemplo, se dibuja en el formulario, una cantidad x de lineas con colores aleatorios, utilizando la función Rnd de visual basic para generar el color aleatorio y para la cantidad de lineas :

 

colocar un control timer

Código fuente en el formulario

Option Explicit

Private Sub Form_Load()
    
    Form1.BackColor = vbBlack
    Form1.ScaleHeight = 100
    Form1.ScaleWidth = 100
    Timer1.Interval = 500

End Sub

Private Sub Timer1_Timer()
    Dim x As Long
    Dim x1 As Long, x2 As Long
    Dim y1 As Long, y2 As Long
    
    Dim Color As Long
    
    ' si el form está minimizado sale
    If Form1.WindowState = vbMinimized Then
        Exit Sub
    End If
    
    ' limpia el formulario
    Me.Cls
        
    ' Int(Rnd * 50) + 1, es la cantidad de lineas
    For x = 0 To Int(Rnd * 50) + 1
        DoEvents
        ' valores x e y para la linea actual
        x1 = Int(Rnd * 101)
        x2 = Int(Rnd * 101)
        y1 = Int(Rnd * 101)
        y2 = Int(Rnd * 101)
        ' color aleatorio de 1 a 15 que luego se usa con Qbcolor
        Color = Int(Rnd * 15)
        ' dibuja la linea
        Form1.Line (x1, y1)-(x2, y2), QBColor(Color)
        Form1.Line (x1, y2)-(x2, y1), QBColor(Color)
        Form1.Line (x2, y1)-(x1, y2), QBColor(Color)
        Form1.Line (y1, y2)-(x1, x2), QBColor(Color)
    Next x
End Sub

 

 

Este código dibuja lineas, como si fuese un lapiz, es deicir al mantener presionado el mouse en el formulario:

 

Option Explicit

Dim Flag As Boolean

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)
    'Establece el CurrentX y el CurrentY
    CurrentX = X
    CurrentY = Y
    
    Flag = True
End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)
    If Flag = False Then
       Exit Sub
    End If
    
    'Dibuja la linea
    Line -(X, Y)
End Sub


Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)
    Flag = False
End Sub 

 

Lo siguiente dibuja un rectángulo sin relleno de color Rojo, pasándole la B como parámetro al método Line

 

Me.ScaleMode = vbPixels

Me.Line (10, 10)-(100, 100), vbRed, B

 

 

Ahora, en ves de especificar B, se indica el valor BF para rellenar el rectángulo :

 

Me.ScaleMode = vbPixels

Me.Line (10, 10)-(100, 100), vbRed, BF

 

 

Cuando se dibujan rectángulos, es decir se utiliza B o BF, X1 , Y1, X2 e Y2 sería equivalente a :

El_Objeto.Line (Izquierda, Arriba) - (Ancho, Alto).

 

El siguiente ejemplo dibuja una línea vertical de color verde una al lado de la otra en todo el ancho del formulario, en un bucle:

 

Private Sub Form_Paint()
Me.ScaleMode = vbPixels


For i = 0 To Me.ScaleWidth Step 10

Line (i, 10)-(i, Me.ScaleHeight - 10), vbGreen

Next


End Sub 

 

Propiedad CurrentX y CurrentY

 

CurrentX devuelve o establece las coordenadas horizontales para el siguiente método de dibujo. CurrentY devuelve o establece las coordenadas verticales para el siguiente método de dibujo, en este caso para el método Line.

Lo siguiente, dibuja al presionar un Command1, un rectángulo de 25 pixeles de ancho por 50 pixeles de alto. Y la posición izquierda y la posición superior (x1 e y1), es decir el CurrentX y el CurrentY, se puede ver como no cambian su valor, y se mantienen igual. Es decir, la primera ves que se presiona para dibujar el primer rectángulo, Currentx y Currenty valen 0. Luego la segunda ves, Currentx tiene el valor 25 y Currenty el valor 50. si se sigue presionando el Command1, mientras no se cambie explicitamente el valor , currentx y Currenty mantendrán dichos valores, x2 e y2.

 

Private Sub Command1_Click()


Me.Line (CurrentX, CurrentY)-(25, 50), vbRed, B
MsgBox "Pos x: " & CurrentX
MsgBox "Pos y: " & CurrentY

End Sub

Private Sub Form_Load()
Me.ScaleMode = vbPixels
End Sub 

Siguiendo el ejemplo anterior, si quisieramos que las coordenadas x2 e y2 sean relativas a x1 e y1, podemos utilizar la palabra reservada Step.

Este código es exactamente igual al anterior, con la diferencia de que se utiliza Step para especificar el Currentx y el Currenty para que x2 e y2 sea relativo a x1 e y1, el resultado sería esto:

 

 

Este es igual al anterior pero la posición Superior (y1) es fija, y lo que se desplaza es la posición horizontal, es decir el CurrentX, y cada ves que se presione el Command1 , el Currentx (la posición izq ) se incrementará de 25 en 25 pixeles.

 

vista del ejemplo para ver el comportamiento de Currentx, Currenty y Step

 

Private Sub Command1_Click()

    Me.Line (CurrentX, 20)-Step(25, 50), vbRed, B

End Sub

Private Sub Form_Load()
    
    Me.ScaleMode = vbPixels

End Sub 

 

También se podría haber hecho lo mismo sin utilizar Step:

Private Sub Command1_Click()


    Me.Line (CurrentX, 0)-(CurrentX + 25, 50), vbRed, B


End Sub


Private Sub Form_Load()
    
    ScaleMode = vbPixels

End Sub 

 

Este otro ejemplo, dibuja un cuadrado uno al lado del otro , a lo ancho del formulario, el rectángulo es de 10 pixeles de ancho por 10 pixeles de alto, y cada cuadrado está separado por 5 pixeles ente uno y otro.

 

vista previa del ejemplo

 

Private Sub Form_Load()
Dim Izquierda As Single


Me.ScaleMode = vbPixels
Me.AutoRedraw = True


For Izquierda = 0 To Me.ScaleWidth Step 15
    Me.Line (Izquierda, 10)-Step(10, 10), vbBlue, B
Next

End Sub 

 

Este otro dibuja rectángulos de 25 x 25 pixeles uno al lado del otro, en todo el formulario mediante dos bucles For. El primer bucle es para los rectángulos horizontales y el otro para los verticales.

 

vista del ejemplo que dibuja mediante Line, erctángulos en el formulario en forma horizontal y vertical

 

 

Private Sub Command1_Click()


Me.Cls


For Horizontal = 0 To ScaleWidth Step 30

For vertical = 0 To ScaleHeight Step 30
   
   Line (Horizontal, vertical)-Step(25, 25), &H808080, B
   
Next

Next
    
End Sub

Private Sub Form_Load()
    
    Me.ScaleMode = vbPixels

End Sub 

 

Dibujar cuadrícula

Lo siguiente dibuja una cuadríacula mediante el método Line en el objeto indicado, puede ser un picturebox o formulario, indicando la cantidad de cuadros para la forma horizontal y la cantidad para el vertical.

 

formulario con la cuadricula

Código fuente en el formulario

Option Explicit

Sub Dibujar_cuadricula( _
    Objeto As Object, _
    CountX As Single, _
    CountY As Single, _
    Optional x_Color As Long = vbBlack, _
    Optional y_Color As Long = vbBlack)
    
    Dim i As Integer
    Dim mx As Long
    Dim my As Long
    
    ' limpiar objeto
    Objeto.Cls
    
    mx = CLng(Objeto.ScaleWidth / CountX)
    my = CLng(Objeto.ScaleHeight / CountY)
    
    ' cambiar color del lápiz
    Objeto.ForeColor = x_Color
    
    ' dibujar las líneas verticales de la cuadricula
    For i = 0 To CountX
        Objeto.Line (i * mx, 0)-(i * mx, Objeto.ScaleHeight)
    Next i
    
    Objeto.ForeColor = y_Color
    
    ' dibujar las líneas horizontales de la cuadricula
    For i = 0 To CountY
        Objeto.Line (0, i * my)-(Objeto.ScaleWidth, i * my)
    Next i
    
End Sub


Private Sub Form_Load()
    
    With Me
        .BackColor = vbWhite
        .ForeColor = vbBlue
        .FontSize = 12
        
        .AutoRedraw = True
        
    End With
    
    Call Dibujar_cuadricula(Me, 25, 25, vbBlue, vbRed)
    'Call Dibujar_cuadricula(Me, 5, 10, vbBlue, vbRed)
    'Call Dibujar_cuadricula(Me, 25, 50, vbBlue, vbRed)
    
End Sub
 

 

 

 

Propiedad DrawWidth

 

Para establecer el grosor de la línea de dibujo se utiliza la propiedad DrawWidth.

Este ejemplo dibuja líneas una al lado de la otra, separadas por 20 pixeles, mediante un bucle y va incrementando el DrawWidth en 1 en cada pasada. El dibujo se realiza en un control PictureBox llamado Picture1

 

vista del ejemplo que incrementa la propiedad DrawWidth

 

Private Sub Command1_Click()

    Picture1.Cls
    Picture1.ScaleMode = vbPixels

        For i = 0 To ScaleWidth Step 25

            Picture1.Line (i, 10)-(i, Picture1.ScaleHeight - 10), vbGreen

            Picture1.DrawWidth = Picture1.DrawWidth + 1

        Next
    
    Picture1.DrawWidth = 1
    
End Sub 

 

Este otro ejemplo dibuja un borde y un degradado en un formulario utilizando el método Line, como muestra la siguiente captura:

 

vista del borde del formulario dibujado con los métodos gráficos en tiempo de ejecución

 

Para crear le ejemlo colocar la propiedad BorderStyle del formulario en 0 - None, y pegar el siguiente código:

 

 
Private Sub Form_Load()
With Me

'Algunas propiedades del formulario
.AutoRedraw = True
.ScaleMode = 3
.FontSize = 16
.ForeColor = &HC0FFFF

End With
End Sub



Private Sub Form_Resize()

'Esto dibuja el degradado al formulario
Degradado Me

'Esto dibuja el borde al formulario
Call Dibujar_Borde

End Sub

Sub Dibujar_Borde()
Me.DrawStyle = 0
Me.DrawWidth = 10
Line (0, 0)-(ScaleWidth - 1, ScaleHeight - 1), &HFFC0C0, B
End Sub


Sub Degradado(vForm As Form)

Dim intContador As Integer

vForm.DrawStyle = vbInsideSolid
vForm.DrawWidth = 2
'vForm.ScaleHeight = 256

For intContador = 0 To 255
vForm.Line (0, intContador)-(Screen.Width, _
            intContador - 1), _
            RGB(0, 0, 255 - intContador), B
Next

Me.CurrentX = 20
Me.CurrentY = 20
Me.Print " Ejemplo para dibujar un borde a un formulario "

End Sub

 


 

2 - Método Circle

 

El método Circle permite dibujar un círculo, una elipse o un arco sobre un objeto.

La sintaxis del método es la siguiente:

EL_Objeto.Circle (Step As Integer, X As Single, Y As Single, Radius As Single, Color As Long, Start As Single, End As Single, Aspect As Single)

Los valores para X e Y especifican el punto donde estará el centro del círculo a dibujar.

Radius es el valor del radio del mismo. El parámetro es obligatorio.

Color: Valor que indica el color que tendrá el círculo o elipse para su contorno. Se puede pasar cualquier valor admitido en visual basic, por ejemplo un Long, un valor Rgb etc..

Los parámetros Start y End son opcionales , y se utilizan para dibujar parte de una elipse o círculo

Por último el parámetro Aspect, se utiliza para definir el aspecto del círculo. Este valor es opcional. Ver ejemplos mas abajo.

 

El siguiente ejemplo crea un círculo en el centro de un control PictureBox, con un radio de 50 pixeles.

 

Private Sub Command1_Click()


Picture1.Cls


With Picture1


Picture1.Circle (.ScaleWidth / 2, .ScaleHeight / 2), _
                 50, _
                 vbBlue

End With


End Sub


Private Sub Form_Load()
    
    Picture1.ScaleMode = vbPixels

End Sub 

 

Este ejemplo dibuja un círculo con un radio aleatorio entre 10 y 100 pixeles, al hacer click en el formulario, es decir el centro del círculo ( x1 e y1 ), son los valores x e y del evento MouseDown del Form:

 

Private Sub Form_Load()
    
    ScaleMode = vbPixels
    Me.DrawWidth = 2
    
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)

    Circle (X, Y), Int((100 - 10 + 1) * Rnd + 10), vbRed

End Sub 

 

Rellenar las circunferencias

 

Para esto se utiliza las propiedades FillColor y FillStyle. FillColor es el color de relleno, para FillStyle ver las opciones de estilos para los rellenos: 0 - Sólido, 1 - transparente, 2 - Línea Horizontal, 3 - Línea Vertical etc..

Un ejemplo: este es igual al anterior, pero rellena el círculo de un color aleatorio, siempre y cuando la propiedad FillStyle no sea transparente:

Colocar un Command1 y un Combo1 en el formulario:

 

Vista del ejemplo utilizando el método Circle con la rpopiedad FillStyle

 

Private Sub Combo1_Click()
Me.FillStyle = Combo1.ListIndex
End Sub

Private Sub Command1_Click()
Me.Cls
End Sub

Private Sub Form_Load()
    
    ScaleMode = vbPixels
    'Grosor de la línea
    Me.DrawWidth = 2

    'Opciones de estilo de relleno
    With Combo1
        .AddItem " 0 - Solido "
        .AddItem " 1 - Transparente "
        .AddItem " 2 - Linea Horizontal "
        .AddItem " 3 - Linea Vertical "
        .AddItem " 4 - Diagonal Arriba "
        .AddItem " 5 - Diagonal Abajo "
        .AddItem " 6 - Cross "
        .AddItem " 7 - Diagonal Cross "
    End With
    
    Command1.Caption = "Limpiar"
    
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)
'color de relleno aleatorio
Me.FillColor = RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd))

'Dibuja el círculo
Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _
               RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd))
    
End Sub 

 

Dibujar Elipses


Para dibujar Elipses se debe especificar en el parámetro Aspecto los siguientes valores. Por ejemplo si pasamos un 1, el círculo será una circunferencia perfecta, si pasamos 0.5 , el radio horizontal del mismo será el doble que el radio vertical, si pasamos un 2 lo contrario.

 

vista del ejemplo para dibujar elipses mediante el parámetro aspecto del método Circle

 

Para el ejemplo del gráfico, colocar un Combo1 y este código en el Form:

 

Private Sub Form_Load()
    
    ScaleMode = vbPixels
    'Grosor de la linea
    Me.DrawWidth = 2

For i = 0.1 To 2.1 Step 0.1
   
   Combo1.AddItem i
   
Next
   Combo1 = Combo1.List(0)
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
                                        X As Single, Y As Single)


Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _
               RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)), , , CSng(Combo1)
    
End Sub 

 


 

3 - Método Point y método Pset :

 

El método Point lo que hace es devolver , como un número entero ( un Long ), el color RGB del punto que se le especifique, puede ser utilizado tanto en un Formulario como en un PictureBox.

El método Pset establece un color determinado para un punto de un objeto.

El siguiente ejemplo utiliza los dos métodos.

Cargar un gráfico en un Picture1 y también colocar un Picture2. Al hacer click en el Picture1, en el evento MouseDown, se obtendrá el color de ese pixel, y ese valor se le aplicará al BackColor del Picture2, como se ve en el gráfico, el punto verde es el establecido con el método Pset.

 

vista del ejemplo para utilizar el método Point y Pset de vb

Private Sub Form_Load()
    
    'Modo de escala en pixeles
    Picture2.ScaleMode = vbPixels
    Picture1.ScaleMode = vbPixels
    
    'Grosor del punto
    Picture1.DrawWidth = 3


End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, _
                                            X As Single, Y As Single)

Picture1.Cls

' Establece el color del Picture2 mediante el método Point
Picture2.BackColor = Picture1.Point(X, Y)

' Dibuja el punto
Picture1.PSet (X, Y), vbGreen

'Valor Hexadecimal del color
Me.Caption = "Valor del color: " & Hex(Picture2.BackColor)

End Sub 

 

Nota: la forma y variaciones en las que se dibuja el punto u otras figuras mediante los métodos gráficos, dependen de las propiedades DrawStyle y DrawMode del objeto.

 

Este es otro ejemplo que utiliza Pset para dibujar un punto al presionar en el formulario, tomando como valores el x e y del evento MouseDown del Form, luego se dibuja una línea desde un punto hacia el otro punto mediante el método Line

 

vista del segundo ejemplo utilizando el metodo PSET

 

Código fuente

Dim X1 As Single
Dim Y1 As Single

Private Sub Form_Load()
AutoRedraw = True
End Sub

Private Sub Form_MouseDown(Button As Integer, _
                           Shift As Integer, _
                           X As Single, _
                           Y As Single)


DrawWidth = 10


'Dibuja el punto con Pset pasandole  el x e y donde se hizo click
PSet (X, Y), vbBlack


If X1 <> 0 And Y1 <> 0 Then
    DrawWidth = 3
    'Dibuja la linea
    Line (X1, Y1)-(X, Y), vbWhite
End If

X1 = X
Y1 = Y

End Sub 

 

 

Este otro ejemplo dibuja puntos en el formulario en forma aleatoria

Colocarle al formulario la propiedad WindowState en Maximized y tambie´n agregar un control CommandButton

Código fuente en el formulario

Dim Tiempo As Long

Private Sub Command1_Click()
    
    
    
    ' dibuja los puntos en el formulario
    Call Dibujar_Puntos(vbBlue)
    
    
    ' dibuja los puntos en el formulario
    Call Dibujar_Puntos(vbButtonFace)
    
    End
    
End Sub

Function Dibujar_Puntos(Color As Long)
    Dim Posicion_X
    Dim Posicion_Y
    
    
    Tiempo = Timer + 5
    While Tiempo >= Timer
        ' valores para la posición x e y
        Posicion_X = Rnd * ScaleWidth
        Posicion_Y = Rnd * ScaleHeight
        ' Dibuja el punto en la coordenada y con el color indicado con Pset
        PSet (Posicion_X, Posicion_Y), Color
        DoEvents
    Wend

End Function


Private Sub Form_Load()
    ' modo de escala en pixeles y grosor del lapiz para el formulario
    ScaleMode = 5
    DrawWidth = 10

End Sub 

 


 

4 - Función QBColor:

 

Definición de la función QBColor de Visual basic:

Esta función devuelve el código de color RGB de un número de color especificado de una lista de colores estándar predefinidos

Es decir, esta función tiene como parámetro, un número entre el 0 y 15, es decir 16 valores posibles para retornar un color especifico.

El siguiente ejemplo, muestra el uso de esta función. Lo que hace es recorer en un bucle, desde el 0 hasta el 15, y le cambia el BackColor a un arreglo de controles Label.

Colocar una matriz de Label1. Label1 (0), Label1(1) .... hasta el Label1(15)

 

Private Sub Form_Load()

Me.Caption = " Ejemlpo de la función QBColor"

   Dim i As Integer
   
   For i = 0 To 15
      ' Asigna el color devuelto por la función QBColor _        al color de fondo del Label
      Label1(i).BackColor = QBColor(i)
      
      ' Asigna el caption
      Label1(i).Caption = " Valor de QBColor: >> " & i
   Next i
   
End Sub

 

 

Al ejecutar el formulario se verá algo por el estilo:

 

vista de los 16 colores posibles devueltos por la función

 

Nota: cualquier valor que no esté entre el 0 y el 15, producirá error.

 
  ProgramasVb Copyright. 2011-2012 All Right Reserved  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis