Manipulación de los eventos de pintado en la clase Form
Manipulación de los eventos de pintado en la clase Form
El primer ejemplo, contenido en el proyecto FondoFormManual (hacer clic aquí para acceder a este ejemplo), se basa en la codificación del evento Paint( ) de la clase Form.
Dentro del procedimiento manipulador de este evento, creamos un objeto Bitmap que contenga la referencia hacia un fichero con el gráfico a mostrar de fondo, y con un objeto Graphics, obtenido del parámetro EventArgs del evento, pintamos el objeto Bitmap. Ver el Código fuente 546.
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' crear un objeto bitmap Dim oBitmap As New Bitmap("LogoWin.gif")
' pintar el objeto con el contexto ' gráfico del formulario; ' el area a pintar abarca desde la ' coordenada 0,0 y toma el ancho y alto ' del formulario de su propiedad Size Dim oGraphics As Graphics = e.Graphics oGraphics.DrawImage(oBitmap, 0, 0, Me.Size.Width, Me.Size.Height)
End Sub
Código fuente 546
Queda todavía un paso más, ya que aunque la imagen se muestra como fondo del formulario, si redimensionamos este, sólo se repinta la parte nueva redimensionada, produciendo un efecto no deseado. Ver Figura 330.
Para conseguir que se pinte por completo toda la imagen, debemos invalidar la zona gráfica del formulario mediante su método Invalidate( ), en el evento Resize, el cual es provocado cada vez que cambia el formulario de tamaño. Después de escribir el Código fuente 547, cuando volvamos a ejecutar el ejemplo, la imagen de fondo se adaptará en todo momento a las medidas del formulario.
© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows
Figura 330. Imagen de fondo con repintado irregular.
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
' cada vez que cambie el tamaño del formulario ' invalidamos su área de dibujo para que ' el evento Paint pinte toda la superficie Me.Invalidate()
End Sub
Código fuente 547
Empleo del control PictureBox
Después de la técnica compleja (sólo en parte), vamos ahora con el modo fácil para crear una imagen
de fondo, que pasa por el uso del control PictureBox. Este control nos permite la visualización de imágenes en el formulario de un modo sencillo, ya que
toda la mecánica de generación la lleva incorporada, con lo que el programador se despreocupa de la manipulación del gráfico a mostrar.
El proyecto FondoFormPicB (hacer clic aquí para acceder a este ejemplo) contiene esta aplicación para que el lector pueda realizar las pruebas que requiera.
Una vez insertado un PictureBox en el formulario, asignaremos a su propiedad Dock el valor Fill; de esta forma el control ocupará por completo la superficie del formulario.
A continuación asignaremos el fichero con la imagen a la propiedad Image, y por último, tenemos que establecer la propiedad SizeMode al valor StretchImage. Esto será todo, por lo que si ejecutamos el programa, la imagen quedará en todo momento ajustada al formulario al igual que en el anterior caso. Ver Figura 331.
Programación con Visual Basic .NET © Grupo EIDOS
Figura 331. Imagen de fondo del formulario empleando un PictureBox.
Parts
» Visual branding biro perjalanan alam (1)
» El manifiesto del ensamblado
» Instalación de Visual Studio .NET
» Grabando texto en un fichero
» Principales elementos en nuestro entorno de trabajo
» Manejo de ventanas adicionales del IDE
» Conceptos mínimos sobre depuración
» Comparación de cadenas en base a un patrón. El operador Like
» Uso de paréntesis para mejorar la legibilidad de expresiones
» Sintaxis de un procedimiento Function
» Sobrecarga de procedimientos
» Abordando un problema mediante programación procedural
» Creación de propiedades para la clase
» Encapsulación a través de propiedades
» Creación de métodos para la clase
» Sobrecarga de métodos o polimorfismo, en una misma clase
» Espacios de nombres (namespaces)
» Acceso a espacios de nombre de otros ensamblados
» Herencia y sobre-escritura de métodos
» Diferencias entre sobrecarga y sobre-escritura en base al tipo de enlace
» Ocultamiento de miembros de una clase
» Comportamiento de las palabras clave Me, MyClass y MyBase ante la sobre-escritura de métodos
» Herencia y métodos constructores
» Clases abstractas o no instanciables
» Comprobación del tipo de un objeto y moldeado (casting)
» Destrucción de objetos y recolección de basura
» Creación y manipulación de estructuras
» Estructuras o clases, ¿cuál debemos utilizar?
» Manipulación de cadenas con la clase String
» Optimizando la manipulación de cadenas con la clase StringBuilder
» Extender las funcionalidades de una clase a través de delegados
» La clase EventArgs, o cómo obtener información del objeto emisor del evento
» Obtención de subarrays a partir de un objeto ArrayList
» Manejo básico de colecciones Hashtable
» Operaciones varias con colecciones Hashtable
» Manipulación de valores en una colección Queue
» Implementando un interfaz para crear una nueva colección
» Manipulación estructurada de errores
» La influencia del orden de los manipuladores de excepciones
» Creación de excepciones personalizadas
» Manipulación de archivos mediante File y FileInfo
» Manipulación de archivos mediante Directory y DirectoryInfo
» Monitorización del sistema de archivos con FileSystemWatcher
» Creación de un formulario básico
» Iniciar el formulario desde Main( )
» Codificación de los eventos de controles
» Selección de texto en un TextBox
» Compartiendo código entre controles
» Crear una clase derivada de un control
» Agregar un proyecto con un formulario derivado
» Crear un formulario heredado desde un proyecto independiente
» Creación de menús desde código
» Detectando el estado de finalización
» Crear un proceso de monitorización
» Comportamiento Modal de formularios
» Formularios dependientes y fijos en primer plano
» Dibujo con las clases Graphics y Pen
» Manipulación de los eventos de pintado en la clase Form
» Manipulando el grado de opacidad del formulario
» Integrando elementos. Un visualizador de gráficos
» Comparativa de ADO /ADO .NET
» Arquitectura de datos desconectados
» Una visión general de ADO .NET
» Espacios de nombres y clases en ADO .NET
» Empleo de Data Binding simple para navegar y editar datos
» Configurar por código las propiedades del DataGrid
Show more