Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Revision as of 01:51, 29 June 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Como capturar programáticamente o ecrã de aplicações Windows Phone

From Wiki
Jump to: navigation, search

Este artigo explica como capturar a imagem do ecrã duma aplicação de Windows Phone 7.

WP Metro Icon Multimedia.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Tested with
SDK: Windows Phone 7.1 SDK
CompatibilityArticle
Translated:
By saramgsilva
Last edited: hamishwillee (29 Jun 2013)


Introdução

Não parece haver nenhuma maneira no Windows Phone 7 de escrever uma aplicação para capturar UI do ecrã de outra aplicação. No entanto, é possivel, capturar o ecrã da própria aplicação - cujo processo será apresentado neste artigo.

WpScreen.png

Implementação

Podemos usar o WriteableBitmap para capturar o ecrã. Esta classe contém um método chamado Render, que necessita de dois parâmetros, UIElement e Transform.

  • O UIElement será definido pelo LayoutRoot (o elemento raiz da UI definido em XAML), que rendariza todo o UI para um bitmap
  • O Transform será definido pelo MatrixTransform que será aplicado antes de os elementos da interfaces sejam desenhado no bitmap - esta tranformação não irá aplicar modificações e os elementos serão desenhados tal e qual como são apresentados.


O code snippet é:

private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
var fileName = String.Format("WmDev_{0:}.jpg", DateTime.Now.Ticks);
WriteableBitmap bmpCurrentScreenImage = new WriteableBitmap((int)this.ActualWidth, (int)this.ActualHeight);
bmpCurrentScreenImage.Render(LayoutRoot, new MatrixTransform());
bmpCurrentScreenImage.Invalidate();
SaveToMediaLibrary(bmpCurrentScreenImage, fileName, 100);
MessageBox.Show("Captured image " + fileName + " Saved Sucessfully", "WmDev Capture Screen", MessageBoxButton.OK);
 
currentFileName = fileName;
}
 
public void SaveToMediaLibrary(WriteableBitmap bitmap, string name, int quality)
{
using (var stream = new MemoryStream())
{
// Save the picture to the Windows Phone media library.
bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, quality);
stream.Seek(0, SeekOrigin.Begin);
new MediaLibrary().SavePicture(name, stream);
}
}

Depois de rendarizar todos os UIElements no WriteableBitmap, chamamos o método Invalidate() que força o redesenho dos conteúdos corretamente. Ai a imagem é guardada numa media library usando o método “SaveToMediaLibrary()” , sendo que este pede três parâmetros: WriteableBitmapObject, filename, quality da photo JPEG.

This page was last modified on 29 June 2013, at 01:51.
223 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×