如何在WinRT中获取Windows Phone 8.1的屏幕截图?

时间:2015-07-14 16:31:44

标签: windows-runtime windows-phone-8.1 winrt-xaml-toolkit writeablebitmapex

我知道如何在Silverlight中执行此操作,但我找不到有关如何在WinRT中执行此操作的足够信息。

我读到WinRT XAML Toolkit可能会有所帮助,但确切的组件WinRT XAML Toolkit - Composition似乎与Windows Universal App不兼容。我目前正在开发Windows Phone 8.1部分。

WinRT XAML Toolkit for Windows Phone 8.1似乎也不像WriteableBitmap.Render方法。

我还读到WriteableBitmapEx中的blit方法可能有所帮助,但我找不到任何关于如何实现此目的的示例。

任何deas?

2 个答案:

答案 0 :(得分:2)

您可以使用RenderTargetBitmap从包含在VisualTree中的UIElement创建图像。

  var renderTargetBitmap = new RenderTargetBitmap();
  await renderTargetBitmap.RenderAsync(uielement);

  var pixels = await renderTargetBitmap.GetPixelsAsync();

  var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
  var encoder = await BitmapEncoder.CreateAsync(encoderId, stream);
  encoder.SetPixelData(
      BitmapPixelFormat.Bgra8,
      BitmapAlphaMode.Ignore,
      (uint)renderTargetBitmap.PixelWidth,
      (uint)renderTargetBitmap.PixelHeight,
      logicalDpi,
      logicalDpi,
      pixels.ToArray());

  await encoder.FlushAsync();

  return renderTargetBitmap;

答案 1 :(得分:1)

如果你想显示它更简单,为了节省你必须做上面的答案:

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(RenderedGrid);
RenderedImage.Source = renderTargetBitmap;