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.