30 setembro 2009

WPF - GIF Animado

Na questão de carregamento de um gif animado, já é mais complicado. O sistema apresentado no tópico anterior não serve para imagens animadas.

Existem muitas variantes de código para apresentar estas imagens. A maioria do que consegui encontrar, refere utilizar as capacidades de animação do WPF. Basicamente, ler cada frame do gif, e fazer uma animação com todas as imagens resultantes. Como se pode encontrar neste projecto. Complicado e com demasiado código.

Solução:
Existem várias.

1
Como referido, é possível ler cada frame do gif e fazer a animação, mas serve apenas caso seja necessário ter um maior controlo. Para mim, não estou a ver dar grande uso a esta opção.

2
Com o comando MediaElement, é possível apresentar a imagem animada. No entanto, tem duas grandes limitações, na minha opinião. A primeira é utilizar um controlo pesado para apresentar uma imagem; A segunda é não aceitar caminhos absolutos ou relativos, tem de ser http:// ou file://.

3
A melhor, para o que se pretende. O WPF permite utilizar as soluções dos Windows Forms. Vejamos o controlo PictureBox:

XAML
< wfi:WindowsFormsHost x:Name="blocoWinForm">
< winForms:PictureBox x:Name="pictureBoxLoading" Visible="False" />
< /wfi:WindowsFormsHost>

Para aceder a este controlo, é necessário declarar dois namespaces:
xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
xmlns:winForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

e adicionar as duas referências do campo assembly:
WindowsFormsIntegration
System.Windows.Forms

Code:
pictureBoxLoading.Image = Properties.Resources.acarregar;

Talvez a parte não tão conhecida sejam os "Resources", definidos no código. No VS2008, basta ir ás propriedades do projecto e escolher a tab dos "Resources". Adicionar as imagens animadas e estas passam a estar acessíveis.

Utilizei esta opção, resultou bem.


Fonte:
animated-gif

1 comentário:

Filipe Martins disse...

mas o properties, aparece sublinhado.. :S