Gif trop lent

SyDaze Messages postés 71 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 8 juin 2007 - 23 déc. 2005 à 15:50
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 25 déc. 2005 à 07:50
Bonjour,

Je voudrai afficher une gif animée dans une boite de dialogue d'attente.

J'ai donc simplement utilisé un composant pictureBox, cela fonctionne
mais le seul problème c'est que l'animation apparaît toute saccadée (le
nombre d'images seconde est considérablement ralenti par rapport à
celui du gif original).

Connaissez vous un composant qui pourrait pallier à ceci ou bien le moyen d'augmenter le nombre d'images secondes du gif?

Merci

6 réponses

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
23 déc. 2005 à 15:58
Salut,

Dis moi un truc, ta machine serait pas super chargée au démarrage de ton appli.
Ca expliquerai le ralentissement.

Sinon, l'affichage et le chargement sont multiThreadé?

Chris

N'oubliez pas de cloturer votre post.
0
SyDaze Messages postés 71 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 8 juin 2007
23 déc. 2005 à 16:09
Salut,

Non la machine
n'est pas spécialement surchargée quand je lance l'appli.

Sinon pour l'instant je ne fais que tester la form et il n'y pas de traitement
qui s'effectue parallèlement à l'affichage qui est dans le thread principal.
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
23 déc. 2005 à 16:14
Alors, zarb ton truc.
Ton GIF est pas trop gros?

Chris

N'oubliez pas de cloturer votre post.
0
SyDaze Messages postés 71 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 8 juin 2007
23 déc. 2005 à 16:21
13,5 KB, à noter que je suis sous Windows 2000 SP4 je ne sais pas si ça peut influer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
23 déc. 2005 à 16:30
13Ko, C léger. Et bien moi pas comprendre.
J'ai utilisé la technique pour faire un écran de démarrage pour un client et j'ai eu aucun Pb.
Il est vrai j'étais sou XP, mais pourquoi ça changerai quelque chose....

Sinon, tu as fait l'essai de mettre ton gif directement sur une form et de l'afficher comme ça, sans rien faire.

Enfin, franchement, je suis à court d'idée.

Chris

N'oubliez pas de cloturer votre post.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 déc. 2005 à 07:50
Salut, normalement un gif dans une PictureBox ça marche bien, doit y'avoir un problème ailleurs..

1 - Tu peux récupérer toutes les frames de ton gif et les animées avec l'aide d'un timer, j'ai mis un exemple sur le site mais je ne sais plus ou.

2 - Tu peux utiliser la classe ImageAnimator pour afficher ton gif directement sur une forme ( à moins que ce soit lui qui soit bugé ! )

using System;
using System.Drawing;
using System.Windows.Forms;


namespace Test
{
class MainForm : Form
{
private Image img;
private Rectangle dst;


private MainForm( ) : base( )
{
img = Image.FromFile( "D:\\Data\\Image\\Picture\\Flex.gif" );
dst = new Rectangle( 0, 0, img.Width, img.Height );

if ( ImageAnimator.CanAnimate( img ) )
ImageAnimator.Animate( img, new EventHandler( Frame_Changed ) );


// Evite le scintillement
this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true );
}


private void Frame_Changed( Object sd, EventArgs e )
{
ImageAnimator.UpdateFrames( img );
this.Invalidate( dst );
}


protected override void Dispose( bool disposing )
{
try
{
if ( ImageAnimator.CanAnimate( img ) )
ImageAnimator.StopAnimate( img, new EventHandler( Frame_Changed ) );
}
finally
{
base.Dispose( disposing );
}
}


protected override void OnPaint( PaintEventArgs e )
{
//base.OnPaint(e);


if ( img == null )
return;


e.Graphics.DrawImage( img, dst );
}

[ STAThread ]
private static void Main( )
{
Application.Run( new MainForm( ) );
}
}
}
0
Rejoignez-nous