Windows runtime 如何在WinRT中拍摄Windows Phone 8.1的屏幕截图?

Windows runtime 如何在WinRT中拍摄Windows Phone 8.1的屏幕截图?,windows-runtime,windows-phone-8.1,winrt-xaml-toolkit,writeablebitmapex,Windows Runtime,Windows Phone 8.1,Winrt Xaml Toolkit,Writeablebitmapex,我知道如何在Silverlight中实现这一点,但我找不到足够的信息说明如何在WinRT中实现这一点 我读到这篇文章可能会有所帮助,但确切的组件WinRT XAML Toolkit-Composition似乎与Windows Universal App不兼容。我目前正在开发Windows Phone 8.1部分 似乎也没有类似于WriteableBitmap.Render的方法 我还读到中的blit方法可能会有所帮助,但我找不到任何关于如何实现这一点的示例 任何deas?您都可以使用它从包含在V

我知道如何在Silverlight中实现这一点,但我找不到足够的信息说明如何在WinRT中实现这一点

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

似乎也没有类似于
WriteableBitmap.Render的方法

我还读到中的
blit
方法可能会有所帮助,但我找不到任何关于如何实现这一点的示例

任何deas?

您都可以使用它从包含在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;
您可以使用从包含在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;
您可以使用从包含在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;
您可以使用从包含在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;

如果要显示它,则使用更简单,为了保存,您必须按照上面的答案进行操作:

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

如果要显示它,则使用更简单,为了保存,您必须按照上面的答案进行操作:

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

如果要显示它,则使用更简单,为了保存,您必须按照上面的答案进行操作:

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

如果要显示它,则使用更简单,为了保存,您必须按照上面的答案进行操作:

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

为什么投票被否决?这不是一个编程问题吗?没关系。我想出来了;)我同意,没有评论的否决票是粗鲁的。只是对工具包的一点评论-我故意降低了对合成库的支持和可见性,因为8.1添加了
RenderTargetBitmap
,它解决了大多数相同的场景。我把它放在工具包源代码中作为灵感,以防在任何时候,
RenderTargetBitmap
都不支持某些重要场景。例如,如果需要的话,它可以被修改为用于将GPU支持的像素着色器效果添加到您的UI中。为什么是向下投票?这不是一个编程问题吗?没关系。我想出来了;)我同意,没有评论的否决票是粗鲁的。只是对工具包的一点评论-我故意降低了对合成库的支持和可见性,因为8.1添加了
RenderTargetBitmap
,它解决了大多数相同的场景。我把它放在工具包源代码中作为灵感,以防在任何时候,
RenderTargetBitmap
都不支持某些重要场景。例如,如果需要的话,它可以被修改为用于将GPU支持的像素着色器效果添加到您的UI中。为什么是向下投票?这不是一个编程问题吗?没关系。我想出来了;)我同意,没有评论的否决票是粗鲁的。只是对工具包的一点评论-我故意降低了对合成库的支持和可见性,因为8.1添加了
RenderTargetBitmap
,它解决了大多数相同的场景。我把它放在工具包源代码中作为灵感,以防在任何时候,
RenderTargetBitmap
都不支持某些重要场景。例如,如果需要的话,它可以被修改为用于将GPU支持的像素着色器效果添加到您的UI中。为什么是向下投票?这不是一个编程问题吗?没关系。我想出来了;)我同意,没有评论的否决票是粗鲁的。只是对工具包的一点评论-我故意降低了对合成库的支持和可见性,因为8.1添加了
RenderTargetBitmap
,它解决了大多数相同的场景。我把它放在工具包源代码中作为灵感,以防在任何时候,
RenderTargetBitmap
都不支持某些重要场景。例如,如果需要,可以对其进行修改,以将GPU支持的像素着色器效果添加到UI中。