[Desenvolvimento] Como gravar um screenshot da tela de sua APP no álbum de fotos do WP

13

Olá pessoal, tudo bom?

Aproveito uma pergunta que me foi feita para escrever mais um post sobre desenvolvimento para Windows Phone. Dessa vez falo sobre como obter, via C#, um screenshot da tela da APP e armazenar a imagem na galeria de fotos do WP.

screenshot

No exemplo temos um botão que será o responsável por disparar a ação de captura da tela e armazenar o resultado no Media Library do Windows Phone. Veja o trecho de código em XAML:

1
2
3
4
5
6
...
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" VerticalAlignment="Bottom">
   <Image Source="Camera.png" Margin="0,0,0,60" Width="400" />
   <Button Name="btnScreenShot" Content="Obter Screenshot" Click="btnScreenShot_Click" />
</StackPanel>
...

Em seguida, foi implementado o método correspondente ao clique do botão. Veja o trecho de código em C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Namespaces incorporados ao projeto---------------
using System.Windows.Media.Imaging;
using Microsoft.Xna.Framework.Media; //Necessário fazer referência ao Microsoft.Xna.Framework no projeto do WP
using System.IO;
using Microsoft.Phone.Tasks;
//------------------------------------------------
...
...
private void btnScreenShot_Click(object sender, RoutedEventArgs e)
{
  var wb = new WriteableBitmap(LayoutRoot, new TranslateTransform());
  using (var mediaLibrary = new MediaLibrary())
  {
    using (var stream = new MemoryStream())
    {
      var filename = string.Format("Blog-Eduardo-H-Rizo-{0}.jpg", DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss"));
      wb.SaveJpeg(stream, wb.PixelWidth, wb.PixelHeight, 0, 100);
      stream.Seek(0, SeekOrigin.Begin);
      mediaLibrary.SavePicture(filename, stream);
      MessageBox.Show("Sua tela foi armazenada no álbum de fotos do Windows Phone.");
    }
  }
}
...

Como resultado temos a imagem da tela da APP armazenada no álbum de fotos do Windows Phone.

saved-pictures

Post Relacionado: 

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.