2016-09-09 71 views
0

我使用下面的代碼來呈現UIElementRenderTargetBitmap.RenderAsync參數異常

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() 

我該如何解決這個問題?

+0

鑑於(據我所知)WritableBitmap沒有FromPixelBuffer方法(加上它返回一個任務和框架方法通常以「異步」結束) - 我會假設這是你自己的擴展方法?你可以將代碼粘貼到這個方法嗎? –

+0

問題是這行「await bitmap.RenderAsync(elementToRender);」,我得到異常 – frenk91

+0

在這種情況下...這是類似於http://stackoverflow.com/questions/35642908/rendertargetbitmap-renderasync-value -does-not-fall-within-expected-range –

回答

0

的問題是,包含「elementToRender」的XAML元素都有它自己的可見性設置爲摺疊