Ejemplos usando el Api de windows para Visual basic
<Volver> - Anterior - Siguiente
Proyecto actualizado para usar la función del Api AnimateWindow desde un módulo de clase.
Para hacer el efecto de animación hay que usar la función Animate enviandole como parámetro el control o formulario a animar, la acción ( Ocultar o mostrar) , el intervalo expresado en milisegundos y el estilo o efecto de animación, que puede ser desde el centro , desde los costados o con transparencia
por ejemplo esto anima el form1 desde el centro
Call .Animated(Form1, eSHOW, 300, AW_CENTER)
Si se usa el efecto Blend (transparencia ) para la animación, puede que en algunos casos sea lento.
Nota: para animar controles , el efecto blend no funciona, funciona solo para formularios
Esta página es la continuación de la página anterior, donde se vieron algunos ejemplos y descripción de la función AnimateWindow para poder realizar las animaciones en ventanas y controles
Pero como se mencionaba anteriormente, al realizar una animación en un objeto que posee la propiedad Hdc ( Formularios y picturebox), la ventana no se repinta, y por eso mismo , hasta que la función Api no termina de ejecutar la animación , se ve de color negro hasta que no vuelva repintar manualmente, o refrescando el objeto con el método Refresh
En la Msdn, en este enlace : AnimateWindow Function , no da un ejemplo de como solucionar este problema, solo menciona que se debe subclasificar la ventana e interceptar el mensaje WM_PRINTCLIENT, para redibujarla.
Buscando en la web, encontré un ejemplo ya hecho en el siguiente foro : AnimateWindow API
Este ejemplo funciona bien, pero no funciona para el efecto Fade o transparencia mediante la constante AW_BLEND . ( Para los demás efectos animados , .. hasta donde lo probé funciona correctamente y los controles se visualizan normalmente )
Es decir funciona con el efecto AW_BLEND, pero el problema es que algunos controles que poseen la propiedad BorderStyle, no se repintan bien, como los controles Picturebox y los textbox. Si se coloca dentro del proceso que subclasifica la ventana, y se fuerza al repintado del control ( ControlConBorderStyle.Refresh ), el objeto se visualiza, pero pierde el borde, y para que vuelva a visualizarce es necesario minimizar y maximizar la ventana. .. Asi que tener en cuanta este detalle
El primero es un formulario Splash o de presentación, y el segundo ejemplo, es un visualizador simple de imagenes , que permite , entre cada cambio de imagen , ver un efecto tipo diapositiva al pasar entre cada imagen seleccionada
En este ejemplo se inicia el poyecto desde un SubMain. Desde el SubMain se llama al Formulario Splash. Este formulario se abre con una animación. Luego de unos segundos, se cierra este formulario y se abre,el formulario principal del programa, también con una animación
La función que inicia la animación se llama Animar, y tiene como parámetros el Formulario, y los flags para el tipo de animación que realizará ( Ver la página anterior que explica el paso de parámetros y el uso de los flags para los distintos tipos de animación en las ventanas )
Colocar en un nuevo proyecto:
Desde el menú Proyecto > Propiedades de proyecto , indicar el objeto inicial donde se arrancará el programa, en este caso desde el procedimiento Sub Main
Al formulario Splash se le puede quitar los bordes, es decir la propiedad BorderStyle en 0
Código fuente en el FrmSplash
Código fuente en el módulo bas que permite subclasificar la ventana para redibujarla y que también tiene el procedimiento Sub Main para arrancar el programa
El siguiente ejemplo lo que hace es visualizar gráficos en un control picturebox , pero cada ves que se cambia de imagen, se le aplica un efecto animado al control picturebox, generando un efecto tipo diapositiva
Colocar en un formulario los siguientes controles :
Al PicImagen, colocarlo dentro del picContenedor
En el list1 se cargan los efectos de animación mediante los flags para usar con el Api AnimateWindows
La vista del ejemplo es como la siguiente imagen, donde el gráfico se redibuja a escala
Primero se lista el código fuente del formulario. Dicho código es el que tiene la función que carga y dibuja la imagen a escala en el picture PicImagen y que hace la llamada a la función Animar, que es la que tiene el código que usa la función Animatewindow junto con los demás procedimientos que subclasifican la ventana para poder redibujar correctamente el picturebox.
Código fuente en el formulario
Código fuente en el módulo bas
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar