WPF - Criando uma Splash Screen (tela de apresentação)
Se você já criou uma tela de apresentação em uma aplicação Windows Forms sabe que um splash screen geralmente usa um formulário para esta finalidade.
A grande novidade, na verdade não é tão nova assim pois o recurso esta disponível a partir do SP1 do Visual Studio 2008, é que podemos usar uma imagem (jpg, bmp, png) para criar uma splash screen em aplicações WPF.
O processo é bem simples, basta acrescentar a imagem que você deseja usar como SplashScreen ao projeto, alterar a propriedade Build Action do arquivo de imagem para SplashScreen e pronto : a imagem será exibida durante a inicialização da sua aplicação.
Além disso temos a classe SplashScreen que fornece uma tela de apresentação para uma aplicação WPF.
Essa classe é usada para mostrar uma imagem em uma janela de inicialização ou tela de apresentação quando uma aplicação WPF inicia.
O método Show exibe a tela de apresentação e o método Close fecha a tela.
Para especificar uma imagem podemos usar o construtor SplashScreen.
Abaixo temos um trecho de código que faz exatamente isso:
SplashScreen splashScreen = new
SplashScreen("SplashScreenImage.bmp");
splashScreen.Show(true);
A classe pode exibir qualquer imagem que é suportada pelo WIC - Windows
Imaging Component como imagens BMP, GIF, JPEG, PNG, ou TIFF.
Para inibir a exibição da imagem na inicialização da aplicação basta definir a propriedade Build Action como None.
Dependendo da velocidade da sua máquina a tela de apresentação poderá ser exibida por um período bem curto e, dessa forma, seria bom poder controlar quanto tempo a tela ficará sendo exibida.
Isso é resolvido nos seguintes passos:
- Criar uma variável para a tela inicial
exigida;
- Desligar a opção AutoClose da tela inicial;
- Usar o método Close da tela inicial, e definir um TimeSpan para o
retardo antes que a tela desapareça totalmente;
Então vou mostrar como usar isso na prática usando o Visual Studio 2008 (poderia usar o Visual Studio 2010 também) e linguagem C# (poderia ter usado VB .NET)
Abra o VS 2008 e crie uma aplicação Visual C# -> Windows usando o template WPF Application com o nome Splash.Screen;
A seguir no altere o nome do arquivo Window.xaml para WindowDemo.xaml e defina a seguinte interface nesta janela usando os controles :
Cria a pasta image no projeto clicando com o botão direito sobre o nome do projeto e selecionando a opção Add-> New Folder;
A seguir escolha uma imagem que deseja exibir na inicialização da aplicação.
Eu estou usando uma imagem bem simples chamada macSplash.jpg conforme figura abaixo. Note que definimos a propriedade Build Action como SplashScreen;
Só isso já bastaria para exibir a imagem na inicialização da aplicação mas vou mostrar como usar a classe SplashScreen com recursos para exibir a imagem com tempo de duração determinado e não padrão.
No arquivo WindowDemo.xaml.cs vamos definir o código a seguir no evento Click do botão btnTela:
No código criamos uma instância da classe SplashScreen indicando o arquivo que vamos usar;
Usamos a classe Thread.Sleep para dar um retardo e fechamos a tela de apresentação.
Estamos chamando o método Show com AutoClose definido como false pois vamos fornecer um valor não-padrão para a atenuação de duração e dessa forma temos que chamar o método Close para fechar a tela inicial.
Se você usar o método Show com AutoClose definido como true, você não tem que chamar o método Close. A tela inicial irá fechar automaticamente depois que o aplicativo é carregado e quando a tela se fecha, o tempo vai demorar de demora para que a tela se desvaneça é determinado pelo valor padrão para o parâmetro fadeoutDuration, que é de 300 milissegundos.
O método Close usa um TimeSpan que especifica quanto tempo leva para a tela desaparecer após a operação de fechamento ter sido iniciada.
Obs: A classe SplashScreen não pode ser usada em aplicativos de navegador XAML (XBAPs), porque eles usam uma arquitetura de inicialização diferente.
Executando o projeto veremos a tela de apresentação ser exibida e ao clicarmos no botão - Exibir Tela de Apresentação - veremos a imagem ser exibida por um tempo e desvanecer conforme a figura abaixo:
E estamos conversados...
Pegue o projeto completo aqui: Splash.Scrren.zip
Eu sei é apenas , mas eu gosto...
Referências: