Mostrando postagens com marcador Splash Screen. Mostrar todas as postagens
Mostrando postagens com marcador Splash Screen. Mostrar todas as postagens

domingo, 23 de janeiro de 2011

WPF com Splash Screen

Desde sempre estamos acostumados a aplicações que precisam de um tempo de espera relativamente grande para iniciar. Isso aconteceu e ainda acontece com aplicações WIN32 que ao iniciarem precisam de uma grande quantidade de arquivos carregados na memória.

Já se foi o tempo onde o .NET era muito lento para carregar. Época em que tínhamos computadores com menos de 1GB de RAM e apenas um processador e núcleo com menos de 1GHz. Não me refiro a aplicação rodando mas sim o tempo que demorava para carregar na memória as DLL do Framework e aplicação num Cold Start. Mas mesmo assim, hoje ainda não é instantâneo.

Uma solução que aumenta a experiência do usuário éSplash Screen do Windows Live Writer a utilização de um Splash Screen, efeito muito utilizado por vários tipos de aplicações: Adobe Photoshop, NetBeans, Visual Studio, Windows Live Writer são alguns exemplos.

Hoje vou mostrar como colocar um Splash Screen Splash Screen do Visual Studio 2010no WPF fazendo com a resposta ao usuário ao chamar a aplicação seja praticamente imediata.

Desde a versão do Framework 3.5 SP1 existem 3 opções para se criar um Splash Screen no WPF. Em todas elas devemos lembrar que as imagens deve ser suportadas pelo Windows Imaging Component (WIC) e isso inclui: BMP, GIF, JPEG, PNG e TIFF.

Se você utilizar uma imagem PNG com transparência ela será mostrada no Splash Screen com transparência. Se utilizar um GIF animado só será mostrado o primeiro frame.

Opção 1: Adicionando o item SplashScreen

Com certeza esta é a opção mais simples.

  • No menu de contexto do seu projeto selecione a opção Add e depois New Item.
  • Selecione o item SplashScreen (WPF) e escolha um nome para o mesmo.
  • Rode a aplicação e veja como ficou a imagem padrão de Splash Screen.
Opção 2: Utilizando uma imagem com Build Action SplashScreen

A segunda opção não consiste em algo tão mais complexo do que o item SplashScreen, na verdade se utiliza o mesmo recurso utilizado por ele, uma imagem que tem definido seu Build Action como SplashScreen.

  • No menu de contexto do seu projeto selecione a opção Add e depois Existing Item.
  • Selecione uma imagem que queira que apareça enquanto a sua aplicação está fazendo o carregamento mais pesado.
  • Vá na aba das propriedades desta imagem e configure o Build Action para SplashScreen.
  • Rode a aplicação e veja como ficou a imagem selecionada como Splash Screen da sua aplicação.
Opção 3:Utilizando as APIs de SplashScreen

Podemos utilizar a API de SplashScreen através da classe de mesmo nome.

Não existem passos mágicos a seguir, apenas devemos prestar atenção que a imagem que quisermos utilizar deve ter seu Build Action configurado para Resource.

public partial class MainWindow : Window { public MainWindow() { var splash = new SplashScreen("Splash.png"); splash.Show(false); splash.Close(TimeSpan.FromSeconds(3)); InitializeComponent(); } }

Como podemos ver, basta instanciar a classesplash SplashScreen passando o caminho do Resource.

Depois chamamos o método Show para mostrar a imagem e informamos que a mesma não deverá ser fechada automaticamente.

Por fim definimos através do método Close que após 3 segundos ela sofrerá um efeito fade out e fechará.

O Splash Screen em si não faz a aplicação ficar mais rápida para abrir, mas como faz uso do Windows Imaging Component (WIC) ele mostra a imagem muito antes da aplicação carregar. Com isso melhora a experiência do usuário com a sua aplicação.

Enjoy