【发布时间】:2015-11-24 22:56:03
【问题描述】:
我已经为此搜索了网络,但尚未找到解决方案。我的通用手机应用中有一个 DispatchTimer。在每个刻度上,我想捕获屏幕的一部分并将其保存为 JPEG。我的代码看起来很简单,并且没有崩溃——它根本不会从 FlushAsync() 返回。看来一定是死锁场景了,但我还没找到冲突在哪里:
using (var ms = new MemoryStream())
{
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(ctrl);
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
using (var ras = ms.AsRandomAccessStream())
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, ras, propertySet);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Premultiplied,
(uint) renderTargetBitmap.PixelWidth,
(uint) renderTargetBitmap.PixelHeight,
logicalDpi, logicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
}
return ms.ToArray();
}
任何帮助都会很棒!我已经为此工作了好几个小时,尝试不同的方法让它工作但没有运气。
【问题讨论】:
标签: windows-phone win-universal-app