Compartir a través de


Control Shape para usuarios de Visual Basic 6.0

Actualización: noviembre 2007

El control Shape de Visual Basic 6.0 no tiene ningún equivalente en Visual Basic 2008. Sin embargo, puede usar los métodos Graphics para lograr los mismos resultados, o puede usar OvalShape de Visual Basic Power Packs o los controles RectangleShape. Estos controles están disponibles como complementos.

Diferencias conceptuales

En Visual Basic 6.0, el control Shape proporciona una manera fácil de dibujar rectángulos, círculos y otras formas en un formulario en tiempo de diseño. El control Shape es un control ligero, lo que indica que no tiene un identificador de Windows, también conocido como HWnd.

En Visual Basic 2008, no existe ningún equivalente para el control Shape y ya no se admiten controles ligeros. Sin embargo, existen maneras de dibujar formas en un formulario tanto en tiempo de diseño como en tiempo de ejecución.

Nota:

Los controles de Visual Basic Power Packs incluyen los controles LineShape, OvalShape y RectangleShape que se pueden usar para reemplazar los controles Line y Shape. Además de duplicar el comportamiento de los controles Line y Shape de Visual Basic 6.0, estos controles agregan nuevas funciones, incluyendo rellenos degradados, selección y eventos en tiempo de ejecución.

Puede descargar Visual Basic Power Packs desde la página Microsoft Visual Basic 2005 Power Packs en el sitio web de MSDN.

En tiempo de diseño, puede dibujar una forma cuadrada o rectangular en un formulario agregando un control Label y estableciendo la propiedad Text en una cadena vacía, la propiedad BorderStyle en FixedSingle, y BackColor, Width y Height en el color y las dimensiones que desee.

En tiempo de ejecución, puede dibujar rectángulos, elipses y formas complejas en un controlador de eventos Paint de un formulario creando un nuevo objeto a partir de la clase Graphics y llamando a sus métodos.

En Visual Basic 6.0, puede utilizar un control Shape para dibujar una forma encima de un control contenedor como un control PictureBox o Frame agregando un control Shape al contenedor.

En Visual Basic 2008, puede lograr el mismo efecto llamando a los métodos Graphics en el evento Paint del control contenedor.

Cambios de código para el control Shape

Los siguientes ejemplos de código muestran las diferencias en las técnicas de codificación entre Visual Basic 6.0 y Visual Basic 2008.

Cambios de código para dibujar formas rectangulares

El código siguiente muestra el dibujo de un rectángulo relleno en un formulario en tiempo de ejecución. En el ejemplo de Visual Basic 6.0, se usa el control Shape; se presupone que se ha agregado un control Line en tiempo de diseño. El ejemplo de Visual Basic 2008 muestra dos métodos distintos: mediante un control Label y mediante los métodos Graphics.

Nota:

Mientras que en Visual Basic 6.0 la unidad de medida predeterminada eran los twips, en Visual Basic 2008 son los píxeles.

' Visual Basic 6.0
Private Sub Form_Load()
    ' Show a solid red rectangle 200 twips from the top left.
    Shape1.Top = 200
    Shape1.Left = 200
    Shape1.FillColor = vbRed
    Shape1.FillColor= vbFSSolid
    Shape1.BorderColor = vbRed
End Sub
' Visual Basic
' Using a Label control.
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
    Dim Shape1 As New System.Windows.Forms.Label
    ' Show a solid red rectangle 14 pixels from the top left.
    Shape1.Location = New System.Drawing.Point(14, 14)
    Shape1.Size = New System.Drawing.Size(200, 100)
    Shape1.BorderStyle = BorderStyle.None
    Shape1.BackColor = System.Drawing.Color.Red
    Shape1.Text = ""
    Controls.Add(Shape1)
End Sub
' Visual Basic
' Using Graphics methods.
Private Sub Form2_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    ' Draw a solid blue rectangle below the red rectangle.
    e.Graphics.FillRectangle(Brushes.Blue, 14, 120, 200, 100)
End Sub

Cambios de código para dibujar círculos

El código siguiente muestra el dibujo de un círculo en un formulario en tiempo de ejecución. En el ejemplo de Visual Basic 6.0, se usa el control Shape; se presupone que se ha agregado un control Shape en tiempo de diseño. El ejemplo de Visual Basic 2008 usa los métodos Graphics.

Nota:

En Visual Basic 6.0 la unidad de medida predeterminada eran los twips; en Visual Basic 2008 son los píxeles.

' Visual Basic 6.0
Private Sub Form_Load()
    ' Draw a 1000 twip diameter red circle.
    Shape1.Top = 0
    Shape1.Left = 0
    Shape1.Height = 1000
    Shape1.Width = 1000
    Shape1.Shape = vbShapeCircle
    Shape1.BorderColor = vbRed
End Sub
' Visual Basic
    Private Sub Form3_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        ' Draw a 70 pixel diameter red circle.
        e.Graphics.DrawEllipse(Pens.Red, 0, 0, 70, 70)
    End Sub

Notas de actualización

Cuando se actualiza una aplicación de Visual Basic 6.0, se actualiza el código que hace referencia al control Shape para usar los controles OvalShape o RectangleShape que están incluidos en la librería Visual Basic Power Packs . Si se encuentra una referencia al control Shape durante la actualización, se emite una advertencia y tendrá que instalar la librería, y hacer referencia a ella desde el proyecto actualizado.

Puede descargar Visual Basic Power Packs desde la página Microsoft Visual Basic 2005 Power Packs en el sitio web de MSDN.

Vea también

Conceptos

Gráficos para usuarios de Visual Basic 6.0