WinRT C#AppBar的屏幕截图

WinRT C#AppBar的屏幕截图,c#,xaml,windows-runtime,C#,Xaml,Windows Runtime,我正在使用“RenderTargetBitMap”类在WinRT C#xaml应用程序中拍摄屏幕截图,如本文所述: 下面是截取屏幕的代码片段 async Task<RenderTargetBitmap> CaptureToStreamAsync(FrameworkElement uielement, IRandomAccessStream stream, Guid encoderId) { try { var renderTargetBitmap = new RenderTa

我正在使用“RenderTargetBitMap”类在WinRT C#xaml应用程序中拍摄屏幕截图,如本文所述:

下面是截取屏幕的代码片段

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;
}
异步任务CaptureToStreamAsync(FrameworkElement uielement、IRandomaccesstream、Guid encoderId)
{
尝试
{
var renderTargetBitmap=新建renderTargetBitmap();
等待renderTargetBitmap.RenderAsync(uielement);
var pixels=await renderTargetBitmap.GetPixelsAsync();
var logicalDpi=DisplayInformation.GetForCurrentView().logicalDpi;
var encoder=await BitmapEncoder.CreateAsync(encoderId,stream);
编码器.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode。忽略,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
logicalDpi,
logicalDpi,
像素。ToArray());
等待编码器。FlushAsync();
返回renderTargetBitmap;
}
捕获(例外情况除外)
{
显示消息(例如消息);
}
返回null;
}
它适用于页面内部或整个页面的任何框架元素。但失败,AppBar元素或整个AppBar出现以下错误:

*mscorlib.dll中发生类型为“System.ArgumentException”的第一次意外异常

其他信息:值不在预期范围内*

注意:尝试获取SS时,AppBar可见

我如何克服上述例外情况?还是有更好的方法来学习Appbars的SS