×
Namespaces

Variants
Actions
Revision as of 04: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 Nokia Developer 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 04:51.
81 page views in the last 30 days.
×