10
votes

Afficher une animation GIF dans WPF

Je voudrais afficher un gif d'animation tel que le chargement ... dans mon XAML car ma procédure progresse. J'ai découvert que cela ne peut pas être facilement fait dans WPF car j'ai chargé mon GIF et cela montre simplement la première image. Quels sont les meilleurs moyens d'afficher une animation dans WPF.


3 Réponses :


1
votes

Vous pouvez incorporer un MediaElement

    <wfi:WindowsFormsHost>
        <winForms:PictureBox x:Name="pictureBoxLoading">
        </winForms:PictureBox>
    </wfi:WindowsFormsHost>


0 commentaires

5
votes

J'ai eu cette question, jusqu'à ce que je découvre cela dans WPF4, vous pouvez simuler vos propres animations d'image clé. Premièrement, diviser votre animation en une série d'images, les titre comme "image1.gif", "image2, gif", etc. Importer ces images dans vos ressources de solution. Je suppose que vous les mettez dans l'emplacement de la ressource par défaut pour les images.

Vous allez utiliser le contrôle de l'image. Utilisez le code XAML suivant. J'ai supprimé les non-essentiels. P>

<Image Name="Image1">
   <Image.Triggers>
      <EventTrigger RoutedEvent="Image.Loaded"
         <EventTrigger.Actions>
            <BeginStoryboard>
               <Storyboard>
                   <ObjectAnimationUsingKeyFrames Duration="0:0:1" Storyboard.TargetProperty="Source" RepeatBehavior="Forever">
                      <DiscreteObjectKeyFrames KeyTime="0:0:0">
                         <DiscreteObjectKeyFrame.Value>
                            <BitmapImage UriSource="Images/Image1.gif"/>
                         </DiscreteObjectKeyFrame.Value>
                      </DiscreteObjectKeyFrames>
                     <DiscreteObjectKeyFrames KeyTime="0:0:0.25">
                        <DiscreteObjectKeyFrame.Value>
                           <BitmapImage UriSource="Images/Image2.gif"/>
                        </DiscreteObjectKeyFrame.Value>
                     </DiscreteObjectKeyFrames>
                     <DiscreteObjectKeyFrames KeyTime="0:0:0.5">
                        <DiscreteObjectKeyFrame.Value>
                           <BitmapImage UriSource="Images/Image3.gif"/>
                        </DiscreteObjectKeyFrame.Value>
                     </DiscreteObjectKeyFrames>
                     <DiscreteObjectKeyFrames KeyTime="0:0:0.75">
                        <DiscreteObjectKeyFrame.Value>
                           <BitmapImage UriSource="Images/Image4.gif"/>
                        </DiscreteObjectKeyFrame.Value>
                     </DiscreteObjectKeyFrames>
                     <DiscreteObjectKeyFrames KeyTime="0:0:1">
                        <DiscreteObjectKeyFrame.Value>
                           <BitmapImage UriSource="Images/Image5.gif"/>
                        </DiscreteObjectKeyFrame.Value>
                     </DiscreteObjectKeyFrames>
                  </ObjectAnimationUsingKeyFrames>
               </Storyboard>
            </BeginStoryboard>
         </EventTrigger.Actions>
      </EventTrigger>
   </Image.Triggers>
</Image>


2 commentaires

J'ai adopté ceci pour un jeu de téléphone Windows, je travaillais et cela a fonctionné un régal! (Mind You, vous ne pouvez pas le faire avec Eventtrigger s mais déplacez simplement le code dans un scénario normal)


Je reçois "CreusteObjectKeyFames ne sont pas pris en charge dans WPF "Erreur.



0
votes

Cliquez simplement sur le bouton droit de la souris sur le fichier .gif et modifier deux propriétés:

Action de construction: ressource intégrée

Copier le répertoire de sortie: Copier si plus récent

alors xxx

et définissez l'événement pour continuer à exécuter xxx


0 commentaires