Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Como visualizar un Gif Animado en PictureBox
#1

Hola Amiguos.

Estoy intentando visualizar un GIF Animado en un PictureBox,
y la imagen se ve frizada.
¿Alguien sabe como hacer que se vea en movimiento?

Gracias.

Hola, me permito contestarme Smile .

Para ver los gif animados se debe usar el MovieBox así:
Código:
  Dim Direccion As String = "/home/usuario/Documentos/ProyectosGambas3/proyecto/myproyecto/imagenes_botones/fireworks-2.gif"

  MovieBox1.Path = Direccion
  MovieBox1.Playing = True
    ¡Gracias!
#2

(12-11-2022, 23:13)alessandri escribió:  
GAMBAS
  1. MovieBox1.Path = Direccion


Al usar la Propiedad "MovieBox1.Path", obtengo esta advertencia:
« gb.gui.base: MovieBox.Path is deprecated. Do not use it anymore. »

Creo que ahora tenemos que usar esta instrucción en su lugar:
GAMBAS
  1. MovieBox1.Animation = Animation.Load("/ruta/del/archivo_animado.gif")



También parece que con este recurso "Animation" ya no es necesaria la instrucción:
GAMBAS
  1. MovieBox1.Playing = True



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 2 usuarios dicen gracias a vuott por este post:
  • Shell, tercoide
    ¡Gracias!
#3

Y no olvidemos que tanto PictureBox como MovieBox tienen la propiedad Mode con sus constantes.
 
Cita:MovieBox.Normal    The picture is displayed at it’s original size. No attempt is made to fit the picture to the size of the MovieBox.
MovieBox.Fill    The picture is stretched to fit both the width and height of the MovieBox. Proportionality of the picture is not maintained.
MovieBox.Cover    The picture proportionality is maintained. The entire MovieBox height and width is filled.
MovieBox.Contain    The picture proportionality is maintained. The entire picture is displayed and stretched for best fit.
MovieBox.Repeat    The picture is displayed at it’s original size and repeated. The entire MovieBox height and width is filled.

Ejemplo:

GAMBAS
  1. Public Sub btnVisualizar_Click()
  2.  
  3.   With MovieBox1
  4.     .Animation = Animation.Load(Application.Path &/ "Jetpac.gif")
  5.     .Mode = MovieBox.Contain
  6.     .Playing = True
  7.    



[Imagen: hB2lc7Q.png]

Jetpac is Loading estaría animado.
Con MovieBox.Contain, la imagen se ajusta automáticamente a su contenedor.

Saludos


Archivos adjuntos
.gz VerGif-0.0.1.tar.gz Tamaño: 21.94 KB  Descargas: 1

"El buen perfume en frasco pequeño se vende"
[-] Los siguientes 1 usuarios dice gracias a Shell por este post:
  • tincho
    ¡Gracias!
#4

Sin venir a cuento, esto me ha recordado el pequeño control que hice hace un porrón de tiempo para cubrir esperas y que llamé waiter. He tenido que desempolvarlo para recordar cómo diablos conseguí el efecto...


Archivos adjuntos
.gz waiter-0.1.1.tar.gz Tamaño: 28.28 KB  Descargas: 2

No podemos regresar
[-] Los siguientes 2 usuarios dicen gracias a Shordi por este post:
  • Shell, tincho
    ¡Gracias!
#5

(16-11-2022, 20:40)Shordi escribió:  Sin venir a cuento, esto me ha recordado el pequeño control que hice hace un porrón de tiempo para cubrir esperas y que llamé waiter. He tenido que desempolvarlo para recordar cómo diablos conseguí el efecto...

¿ Creaste un control equivalente al spinner ?.

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!
#6

No sé si es igual que el spinner porque nunca he usado el spinner. Lo  creé en una situación en la que lanzas un proceso externo vía shell y tu programa debe esperar hasta que termine y tu programa parece haberse colgado mientras. No recuerdo la situación concreta ni si entonces existía el spinner.

En mi respuesta anterior tienes el ejemplo.

Saludos.

No podemos regresar
    ¡Gracias!
#7

(17-11-2022, 11:35)Shordi escribió:  En mi respuesta anterior tienes el ejemplo.

Si lo he bajado y lo iba a probar pero me encuentro esto.

[Imagen: 8Bn5ObE.png]

Esto deberíamos crear un post nuevo y tratar este tipo de problemas.
Hace un tiempo creé uno.

A ver, el problema principal que nos encontramos es:

¿ Cómo saber que control es el obsoleto ?.
Se me ocurre abrir el directorio del proyecto desde la consola o el explorador. Abrir archivos fuentes o del formulario
y ver que hay ahí. Si muestra el tipo de componente que falta, pero estoy más perdido que el barco del arroz. Huh
Supongo que la clase no es.

Este es el archivo fTest.form
 
Cita:# Gambas Form File 3.0

{ Form Form
  MoveScaled(0,0,36,41)
  { Button1 Button
    MoveScaled(9,23,16,7)
    Text = ("Tarea que tarda")
  }
  { waiter1 waiter
    MoveScaled(11,8,13,13)
  }
}

No son componentes que parezcan obsoletos .
O puede que dentro del archivo de clase. Pero es que no veo nada que parezca que pueda dar error en el código.

¿ Un método en la clase que quede obsoleto ?.

Este proyecto usa gb.gui, lo he cambiado por gb.gui.qt, pero no lo arregla (no lo esperaba, hay algo más).
Si marco mostrar componentes obsoletos en propiedades del proyecto en el área de componentes, no muestra nada tampoco.
No se hace uso de un componente obsoleto.

Ya lo he encontrado. La forma de verlo rápidamente es usar la opción que vemos como "Delete controls from missing component".
( No es nada nuevo ).

Es la mejor forma de ver este problema:

Pero es absurdo que se cree una clase y se queje de esta. Exclamation

[Imagen: mqg4hPo.png]

Ostras.

¿ Qué opinas ?.

De hecho, le doy a ejecutar la aplicación y funciona sin problemas. Confused
 

Shordi:

Cuando dices:
 
Cita:Si cierras el form antes de que termine la tarea del shell, la tarea continuará así como el ciclo de eventos pero el objeto esperador ya no existirá cuando el shell devuelva el control al ciclo de eventos.
    If Error Then Break

Lo que hice fue ir al gestor de procesos del sistema y ver que se ejecutaba.
Desde que la aplicación comienza a ejecutarse, aparece gbx3 (El interprete) hasta que cierro la aplicación.
En este caso, si cierro esta aplicación, ( el ciclo de eventos ). El gbx3 sigue activo, hasta que finaliza todo su proceso.

P.d es que no encontré el post donde se habla de la aplicación. Probablemente se encuentre en el foro antiguo.

Saludos

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!
#8

Cita:No son componentes que parezcan obsoletos .
O puede que dentro del archivo de clase. Pero es que no veo nada que parezca que pueda dar error en el código.

¿ Un método en la clase que quede obsoleto ?.
No se trata de algo obsoleto, es el propio control waiter el que no encuentra. Ten en cuenta que es un control y al intentar cargar en el ide por primera vez no puede porque no está aún compilado. Si ignoras el error, compilas la clase waiter y luego, si es necesario, cierras y abres el proyecto otra vez, no debería aparecer el error.
Cita:P.d es que no encontré el post donde se habla de la aplicación. Probablemente se encuentre en el foro antiguo.
 
Supongo, ya digo que es muy antiguo.

Saludos.

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • Shell
    ¡Gracias!
#9

(18-11-2022, 21:56)Shordi escribió:  No se trata de algo obsoleto, es el propio control waiter el que no encuentra. Ten en cuenta que es un control y al intentar cargar en el ide por primera vez no puede porque no está aún compilado. Si ignoras el error, compilas la clase waiter y luego, si es necesario, cierras y abres el proyecto otra vez, no debería aparecer el error.

Entonces es algo más bien que no encuentra, ok (obviamente "missing"). De hecho ya no lo hace, después de su ejecución.
Pero como vi este problema (similar) en otra aplicación me quedé con la duda.

Por ejemplo me he encontrado el caso de un componente que fue sustituido por otro en el editor de Gambas que eran una mejora del mismo y el error
al cargar el ejemplo se muestra igual que este ( aunque sea por otro motivo ).

Fue con el control TextEdit que luego se sustituyó por TextEditor. Estaba en una práctica con TabStrip y TabPanel. Por aquella fecha se usaba Gambas 3.8

Saludos

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)