【问题标题】:RenderTargetBitmap.RenderAsync Argument exceptionRenderTargetBitmap.RenderAsync 参数异常
【发布时间】: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


【解决方案1】:

问题在于包含“elementToRender”的 xaml 元素将其自己的可见性设置为 Collapsed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2013-12-16
    • 2010-09-26
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多