• Domingo 22 de Diciembre de 2024, 17:55

Autor Tema:  COLOCAR IMAGENES EN MOVIMIENTO (GIF) EN UN FORMULARIO V.B  (Leído 22182 veces)

Marlon17

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
COLOCAR IMAGENES EN MOVIMIENTO (GIF) EN UN FORMULARIO V.B
« en: Miércoles 21 de Abril de 2010, 02:49 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: COLOCAR IMAGENES EN MOVIMIENTO (GIF) EN UN FORMULARIO V.B
« Respuesta #1 en: Jueves 22 de Abril de 2010, 13:57 »
0
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
  1.  
  2. Private FullScreen As Boolean
  3.  
  4. Private Sub Form_Load()
  5.    Timer1.enabled=false
  6.    Timer1.interval=50
  7.     Wmp.settings.autoStart = False
  8.     Command1.Caption = "Sin medios"
  9.     Command2.Caption = "Elegir medio..."
  10.     Check1.caption= "Pantalla completa"
  11. End Sub
  12.  
  13. Private Sub Command2_Click()
  14.     If Wmp.URL = "" Then
  15.         Wmp.URL = "C:VideossNavidades-2009.avi"
  16.         Command1.Caption = "Reproducir"
  17.         Command2.Caption = "Parar"
  18.     Else
  19.         Timer1.Enabled = False ' nos aseguramos que un problema de carga no se perpetúe...
  20.         Wmp.Controls.stop
  21.         Command2.Caption = "Elegir medio..."
  22.         Command1.Caption = "Sin medios"
  23.         Wmp.URL = ""
  24.     End If
  25. End Sub
  26.  
  27. Private Sub Command1_Click()
  28.     On Local Error GoTo Insiste
  29.  
  30.     If Wmp.playState <> wmppsPlaying Then
  31.         If Wmp.URL = "" Then
  32.             Call Command2_Click
  33.         Else
  34.             Select Case Wmp.playState
  35.                 Case wmppsPaused, wmppsStopped, wmppsReady  ' no tienen porque agruparse en la misma acción, pero para el ejemplo vale.
  36.                     Wmp.Controls.play
  37.                     Command1.Caption = "Pausar"
  38.                     DoEvents
  39.                     If Wmp.FullScreen <> FullScreen Then
  40.                         Wmp.FullScreen = FullScreen
  41.                     End If                Case Else
  42.                     Beep ' otras acciones ante otros estados...
  43.             End Select
  44.         End If
  45.     Else
  46.         If Wmp.URL <> "" Then
  47.             Wmp.Controls.pause
  48.             Command1.Caption = "Reproducir"
  49.         Else
  50.             MsgBox "Primero debe seleccionar un medio, pulse el botón 2."
  51.         End If
  52.     End If
  53.  
  54. Exit Sub
  55. Insiste:
  56.     ' 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
  57.     Err.Clear
  58.     Timer1.Enabled = True  ' lo derivamos a un bucle que espera hasta que se ponga en play.
  59. End Sub
  60.  
  61. Private Sub Check1_Click()
  62.     FullScreen = (Check1.Value = 1)
  63.    
  64.     If Wmp.playState = wmppsPlaying Then ' si está en play la orden se obedece inmediatamente, sino, queda guardada para cuando se haga play.
  65.         Wmp.FullScreen = FullScreen
  66.     End If
  67. End Sub
  68.  
  69. ' le damos tiempo a que 'cargue', cambiando de estado de transición a estado reproduciendo.
  70. Private Sub Timer1_Timer()
  71.     If Wmp.playState = wmppsPlaying Then
  72.         Timer1.Enabled = False
  73.         Wmp.FullScreen = FullScreen
  74.     End If
  75. End Sub
  76.  
  77.  
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
  1.  
  2. Animation1.open "C:Mi animacion.avi"  ' carga y ejecuta la animación.
  3.  
  4. Animation1.stop ' pausa la animación.
  5. Animation.Play  ' pone en marcha de nuevo la animación, admite 3 parámetros para señalar como se quiere
  6. Animaton1.Close ' descarga la animación, ahora no se admite ni play ni stop
  7.  
  8.  
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.
« última modificación: Viernes 23 de Abril de 2010, 21:23 por Nebire »
«Ma non troppo»
----> ModoVacaciones = False<----

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: COLOCAR IMAGENES EN MOVIMIENTO (GIF) EN UN FORMULARIO V.B
« Respuesta #2 en: Viernes 23 de Abril de 2010, 13:48 »
0
Tambien pudes usar un WebBrowser, agregando el componente como te explica Nebire, y utilizando el metodo Navigate

Código: Visual Basic
  1. WebBrowser1.Navigate("C:archivo.gif")
  2.  

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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================