WinRT C#AppBar的截图

时间:2015-07-30 19:42:05

标签: c# xaml windows-runtime

我正在使用" RenderTargetBitMap"如本文中所解释的那样,在WinRT C#xaml应用程序中截取屏幕截图: http://mariusbancila.ro/blog/2013/11/05/render-the-screen-of-a-windows-store-app-to-a-bitmap-in-windows-8-1/comment-page-1/#comment-354935

以下是捕获屏幕的代码段。

async Task<RenderTargetBitmap> CaptureToStreamAsync(FrameworkElement uielement, IRandomAccessStream stream, Guid encoderId)
{
 try
{
  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;
  }
  catch (Exception ex)
  {
  DisplayMessage(ex.Message);
  }

   return null;
}

它适用于页面内的任何框架元素或整个页面。但是,对于AppBar元素或整个appbar,会出现以下错误:

* mscorlib.dll中出现'System.ArgumentException'类型的第一次机会异常

附加信息:价值不在预期范围内。*

注意:尝试使用SS时,AppBar可见。

如何克服上述异常?或者有更好的方法来接受Appbars的SS吗?

0 个答案:

没有答案