【发布时间】:2017-07-11 21:04:52
【问题描述】:
我使用下面的代码来渲染一个UIElement。
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(elementToRender); //this line throws the exception
var pixelBuffer = await bitmap.GetPixelsAsync();
var wb = new WriteableBitmap(1, 1);
wb = await wb.FromPixelBuffer(pixelBuffer, bitmap.PixelWidth, bitmap.PixelHeight);
var stream = await wb.GetStream();
这是我的 xaml:
<Grid x:Name="elementToRender" Background="White" Width="400" Height="400">
<Ellipse Fill="Black" />
</Grid>
我在页面加载后调用这个方法,但是如果我尝试使用这个代码我得到一个异常,这是堆栈跟踪:
System.ArgumentException
HResult=-2147024809
Message=Value does not fall within the expected range.
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
我该如何解决这个问题?
【问题讨论】:
-
鉴于(据我所知)WritableBitmap 没有 FromPixelBuffer 方法(加上它返回一个任务并且框架方法通常以“异步”结尾) - 我会假设这个是你自己的扩展方法吗?你能把代码粘贴到这个方法中吗?
-
问题是这一行“await bitmap.RenderAsync(elementToRender);”,我得到了异常
-
在那种情况下...这类似于stackoverflow.com/questions/35642908/…
-
正如我所写,我在从页面引发加载的事件后调用该方法
-
无法重现您的问题,请提供您如何获得
elementToRender对象。
标签: c# windows-runtime winrt-xaml