153 votes

Comment montrez-vous GIFs animés sur un Windows Form (c#)

J’ai un formulaire affichant les messages d’avancement comme un processus assez long s’exécute. C’est un appel à un service web, donc je ne peux pas vraiment montrer un pourcentage complet sur une barre de progression significative. (Je n’aime pas particulièrement la propriété Marquee de la barre de progression)

Je voudrais montrer un GIF animé à donner au processus de la sensation d’une certaine activité (par exemple, les dossiers de vol d’un ordinateur à l’autre comme processus de copie de Windows).

Comment faites-vous cela ?

268voto

FryHard Points 4037

Il n'est pas trop dur.

  1. Déposez un contrôle picturebox sur votre formulaire.
  2. Ajouter la .fichier gif comme l'image dans le contrôle picturebox
  3. Afficher la picturebox lorsque vous chargez.

Choses à prendre en considération:

  • La désactivation de la picturebox empêcher le gif d'être animé.

Gifs animés:

Si vous êtes à la recherche pour les gifs animés, vous pouvez générer ici

Une autre façon de le faire:

Une autre façon que j'ai trouvé qui fonctionne très bien est la async contrôle de boîte de dialogue que j'ai trouvé sur le projet de code

12voto

Aruch Points 81

J'ai eu le même problème. L'ensemble forme (y compris les gif) en s'arrêtant pour se redessiner en raison de l'exploitation de longue durée de travail en arrière-plan. Voici comment j'ai résolu ce problème.

  private void MyThreadRoutine()
  {
   this.Invoke(this.ShowProgressGifDelegate);
   //your long running process
   System.Threading.Thread.Sleep(5000);
   this.Invoke(this.HideProgressGifDelegate);
  }

  private void button1_Click(object sender, EventArgs e)
  {
   ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine);
   Thread myThread = new Thread(myThreadStart);
   myThread.Start(); 
  }

J'ai simplement créé un autre thread pour être responsable de cette opération. Grâce à cette forme initiale, continue de redessiner sans problèmes (y compris mon gif de travail). ShowProgressGifDelegate et HideProgressGifDelegate sont délégués en forme de définir la propriété visible du contrôle pictureBox avec gif vrai/faux.

7voto

PhiLho Points 23458

Notez que sous Windows, vous traditionnellement n’utilisez des Gifs animés, mais petites animations AVI : il y a un contrôle natif de Windows juste pour les afficher. Il y a même des outils pour convertir des images GIF animées AVI (et vice-versa).

3voto

Grank Points 1890

Si vous le mettez dans un contrôle PictureBox, il devrait fonctionner

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X