Manipulando el grado de opacidad del formulario

Manipulando el grado de opacidad del formulario

La propiedad Opacity de la clase Form, contiene un valor numérico de tipo Double que permite establecer el grado de opacidad del formulario. Cuando esta propiedad contenga el valor 1, el formulario se mostrará en la forma habitual; pero si el valor es 0, el formulario será transparente.

Podemos asignar valores intermedios de modo que hagamos parcialmente transparente el formulario, mostrando los elementos que quedan bajo el mismo. Debemos tener en cuenta que cuando asignemos este valor mediante la ventana de propiedades del formulario en modo de diseño, el número asignado será el porcentaje de opacidad. La Figura 332 muestra la ventana de propiedades para este caso con un setenta y cinco por ciento de opacidad para el formulario.

Figura 332. Propiedad Opacity establecida desde la ventana de propiedades del IDE.

La Figura 333 muestra este formulario con el anterior porcentaje de opacidad.

Figura 333. Formulario parcialmente transparente debido a la propiedad Opacity.

© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows

El Código fuente 548 establece por código la opacidad del formulario a un grado del cuarenta y cinco por ciento, en el evento DoubleClick del formulario.

Private Sub Form1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DoubleClick

Me.Opacity = 4.5

End Sub

Código fuente 548

El proyecto Opacidad (hacer clic aquí para acceder a este ejemplo) contiene un control TrackBar, que con el estilo de un control de volumen, nos va a permitir graduar el nivel de opacidad del formulario.

Mediante las propiedades Maximum y Minimum establecemos el rango de opacidad respectivamente a diez y cero.

En la propiedad Value asignaremos el valor 10, para partir de la máxima opacidad e ir disminuyendo. Como efectos visuales de este control, las propiedades Orientation y TickStyle nos permiten establecer

la orientación del indicador de posición y su apariencia. Finalmente, el evento Scroll se producirá cada vez que movamos el indicador de posición en el

control, ejecutando el código de su procedimiento manipulador, que vemos en el Código fuente 549.

Private Sub tkbOpaco_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles tkbOpaco.Scroll

' cada vez que se mueve el desplazador ' del TrackBar se modifica la opacidad Select Case Me.tkbOpaco.Value

Case 0 Me.Opacity = 0

Case 10 Me.Opacity = 1

Case Else Me.Opacity = "0," & Me.tkbOpaco.Value End Select

End Sub

Código fuente 549

La Figura 334 muestra este ejemplo en ejecución. Esta útil característica de los formularios nos permite, por ejemplo, proporcionar un efecto de fundido

durante su proceso de cierre. Para conseguirlo, escribiremos el manipulador para el evento Closing del formulario, que es producido cuando el formulario está a punto de cerrarse; en dicho procedimiento de evento, cancelaremos en ese momento el cierre del formulario, crearemos un temporizador que conectaremos con un manipulador del evento Tick, y lo pondremos en marcha.

Programación con Visual Basic .NET © Grupo EIDOS

Figura 334. Utilizando un TrackBar para graduar la opacidad de un formulario.

En el procedimiento del evento Tick, crearemos el efecto de fundido, disminuyendo el grado de opacidad del formulario hasta hacerlo invisible, punto en el que cerraremos el formulario. Esto hará que se vuelva a pasar por el evento Closing, pero en esta ocasión, como la opacidad del formulario estará a cero, no se volverá a realizar el proceso de fundido. Todo esto lo vemos en el Código fuente 550.

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

Dim oTiempo As Timer

' el formulario debe tener el valor 1 ' en Opacity para conseguir el efecto If Me.Opacity <> 0 Then

' cancelamos el cierre del formulario e.Cancel = True

' iniciamos un temporizador cada medio segundo oTiempo = New Timer() oTiempo.Interval = 500 ' conectamos el temporizador con un manipulador ' de su evento Tick AddHandler oTiempo.Tick, AddressOf TickTiempo oTiempo.Start()

End If

End Sub

Private Sub TickTiempo(ByVal sender As Object, ByVal e As EventArgs)

' este manipulador del evento del temporizador, ' cada medio segundo irá disminuyendo el grado ' de opacidad del formulario hasta hacerlo invisible Static dbContador As Double = 1 dbContador -= 0.1 Me.Opacity = dbContador

' cuando el formulario es invisible If Me.Opacity = 0 Then

' parar el temporizador CType(sender, Timer).Stop() ' cerrar el formulario Me.Close()

End If

© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows

End Sub

Código fuente 550