Programación General > Visual Basic 6.0 e inferiores
COLOCAR IMAGENES EN MOVIMIENTO (GIF) EN UN FORMULARIO V.B
(1/1)
Marlon17:
No logro colocar una gif animado en el formulario. Porfavor quisiera saber Con que herramienta y si se necesita de un Codigo para que funcione. Soy nuevo en V.B. Porfavor Urgente es para un Proyecto
Gracias :D
Nebire:
Visual Basic no soporta directamente imágenes gif animadas. Lo que no debe interpretarse como que no tiene posibilidad de reproducirse animación.
Hay varios métodos dependiendo de para que se necesite.
Te señalo 6 métodos (1,2,3...6), aunque no explico en profuncdidad en todos.
Por ejemplo si tratas de reproducir un vídeo y/o sonido, puedes optar por un par de soluciones que te propongo...
Ve al formulario y abre la ficha de selección de componentes .... por defecto se abre en controles, ve a 'objetos insertables'... elige los 2 que te indico que es con los que vamos a probar:
* clip multimedia:
* Windowos media player
1) Clip multimedia no requiere gran cosa, simplemente lo sitúas en el formulario, y por encima de él colocas un label que diga algo como "Pulsa doble click para abrir el archivo a reproducir" (o incluso en la propiedad tooltiptext). Eso es todo, si ejecutas la aplicación ahora verás que cuando hagas doble click se abre un control con un menú, yendo al menu archivo al pulsar en abrir permite localizar el tipo de archivo deseado para reproducir (vídeo y/o audio) una vez seleccionado, la reproducción comienza en una ventana aparte... es trabajo tuyo si deseas capturar dicha ventana e incorporarla a tu formulario.
2) Windows Media Player (el otro objeto insertable añadido): Ponemos una instancia en el formulario, el nombre del control queda muy largo, supongamos que lo abreviamos a sólo: Wmp, bien añade 2 botones al formulario , un checkbox y 1 timer, desde uno de estos botones podrás configuras para localizar el archivo multimedia deseado (después que pruebes el código mostrado), tal vez usando el commondialog tal vez sea un archivo a elegir de una lista que ya proporcionas...
Te pongo un sencillo ejemplo de código, donde se da por hecho que ya se conoce el vídeo a mostrar. Fíjate que en realidad bastaría con el código para localizar y asignar el vídeo, luego se podría usar la interfaz que provee el control, que es de todos conocidas, pero para que veas algo de código, he puesto código para manejarlo con esos 2 botones ... play, pausa, stop, asignar vídeo y pantalla completa.
--- Código: Visual Basic --- Private FullScreen As Boolean Private Sub Form_Load() Timer1.enabled=false Timer1.interval=50 Wmp.settings.autoStart = False Command1.Caption = "Sin medios" Command2.Caption = "Elegir medio..." Check1.caption= "Pantalla completa"End Sub Private Sub Command2_Click() If Wmp.URL = "" Then Wmp.URL = "C:VideossNavidades-2009.avi" Command1.Caption = "Reproducir" Command2.Caption = "Parar" Else Timer1.Enabled = False ' nos aseguramos que un problema de carga no se perpetúe... Wmp.Controls.stop Command2.Caption = "Elegir medio..." Command1.Caption = "Sin medios" Wmp.URL = "" End IfEnd Sub Private Sub Command1_Click() On Local Error GoTo Insiste If Wmp.playState <> wmppsPlaying Then If Wmp.URL = "" Then Call Command2_Click Else Select Case Wmp.playState Case wmppsPaused, wmppsStopped, wmppsReady ' no tienen porque agruparse en la misma acción, pero para el ejemplo vale. Wmp.Controls.play Command1.Caption = "Pausar" DoEvents If Wmp.FullScreen <> FullScreen Then Wmp.FullScreen = FullScreen End If Case Else Beep ' otras acciones ante otros estados... End Select End If Else If Wmp.URL <> "" Then Wmp.Controls.pause Command1.Caption = "Reproducir" Else MsgBox "Primero debe seleccionar un medio, pulse el botón 2." End If End If Exit SubInsiste: ' el error se produce porque antes del estado play está en estado de 'transición' hasta haber decodificado lo suficiente... este tiempo depende del vídeo y el códec que emplee Err.Clear Timer1.Enabled = True ' lo derivamos a un bucle que espera hasta que se ponga en play.End Sub Private Sub Check1_Click() FullScreen = (Check1.Value = 1) If Wmp.playState = wmppsPlaying Then ' si está en play la orden se obedece inmediatamente, sino, queda guardada para cuando se haga play. Wmp.FullScreen = FullScreen End IfEnd Sub ' le damos tiempo a que 'cargue', cambiando de estado de transición a estado reproduciendo.Private Sub Timer1_Timer() If Wmp.playState = wmppsPlaying Then Timer1.Enabled = False Wmp.FullScreen = FullScreen End IfEnd Sub Luego pinchando sobre el control en tiempo de ejecución el propio control ofrece bastantes cosas, incluído el 'fullscreen' pausa stop y tal, por lo que como te indicaba, bastaría un botón para parar el vídeo actual si está en marcha, seleccionar un nuevo origen y opcionalmente darle a play si autostart está en false.
3) Tambien puedes usar un control MCI...
4) El control 'Microsoft directMedia animation control', concretamente una instancia de 'spriteControl'... permite hacer animaciones.
5) Si lo que quieres es utilizar animaciones del estilo 'moviendo ficheros', entonces resulta muy útil el control 'animation ' que está en la librería de controles 'Microsoft Windows common controls 2.5.0' y 2.6.0 (la 2.6.0 se diferencia en que incluye más controles, la 2.5.0 solo incluye 2 el control animation y un control 'updown').
Este control (animation). Permite usar un AVI que tu (o quien sea) hayas compuesto. tiene algunas limitaciones
* Está limitado a (creo recordar) 64 kb de tamaño como maximo (o quizás 50kb, no recuerdo exactamente). (tamaño del fichero)
* No puede incluir audio el AVI que se utilice, dará error.
* Las imágenes han de ser bmp, por lo que o bien son muy pequeñitas o bien (es lo que yo suelo hacer) comprimirlas en .RLE (siguen siendo bmp).
Luego algunas notas:
* Para las transparencias se ha de usar un color el mismo para todas las imágenes cuando formes el avi.
* Recuerda que el tamaño de los frames son definitivos, el control podrá tener el tamaño que se quiera, pero no rescala la animación.
* Asegúrateque todos los frames tienen el mismo tamaño.
* Cuando tengas todas las imágenes usa un programa para montar el AVI.
* Una vez montado el avi, debes probarlo para ver si no cumple alguna característica.
--- Código: Visual Basic --- Animation1.open "C:Mi animacion.avi" ' carga y ejecuta la animación. Animation1.stop ' pausa la animación.Animation.Play ' pone en marcha de nuevo la animación, admite 3 parámetros para señalar como se quiere Animaton1.Close ' descarga la animación, ahora no se admite ni play ni stop Puede ser útil que guardes el avi en un archivo de recursos....
6) Y por último, a las bravas puedes usar un control picture oculto con una imagen que contiene las diferentes imágenes que forman la animación, ordeenadas en columnas y filas del mismo tamaño, luego con un timer vas tomando cuadros de la imagen original y pegándolos donde necesitas . El control pictureclip, puede ayudarte bastante con esto.
F_Tanori:
Tambien pudes usar un WebBrowser, agregando el componente como te explica Nebire, y utilizando el metodo Navigate
--- Código: Visual Basic ---WebBrowser1.Navigate("C:archivo.gif")
Existen gran cantidad de OCX para reproducir gif, de momento recuerdo uno que era sencillo y efectivo de nombre gif89.ocx
http://www.recursosvisualbasic.com.ar/h ... imados.htm
Saludos
Navegación
Ir a la versión completa