我正在使用" 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吗?