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

[0] Índice de Mensajes

Ir a la versión completa