2016-05-17 50 views
0

我正在用win2d進行「hello world」類型測試。 在我的畫布繪製事件,這給了我一個很好的圓圈如我所料:UWP CanvasRenderTarget給出了損壞的圖像

args.DrawingSession.FillCircle(100, 100, 50, Windows.UI.Colors.Red) 

不過,我想提醒「關閉屏幕」,所以我想這:

Dim dev As CanvasDevice = sender.Device 
    Dim crt As New CanvasRenderTarget(dev, CSng(sender.ActualWidth), CSng(sender.ActualHeight), sender.Dpi) 
    Dim ds As CanvasDrawingSession = crt.CreateDrawingSession 
    ds.FillCircle(100, 100, 50, Windows.UI.Colors.Red) 

    args.DrawingSession.DrawImage(crt) 

這類的作品,但當我調整頁面強制重繪時,我看到各種奇怪的損壞圖像,看起來像撕裂,未初始化的內存等。

這是怎麼回事,我該如何解決這個問題? 非常感謝。

+0

好的,想通了,需要在DrawImage之前做ds.flush來讓硬件渲染器實際完成它 – Ianb

回答

0

好了,想通了,需要在之前的DrawImage開始和ds.flush做ds.clear獲得硬件渲染真正做到這一點

1

你只需要調用CanvasDrawingSession.Flush在涉及極少數情況下在不同的圖形API之間進行互操作。這將爲你在這裏所做的工作分類,但遠遠超過必要的昂貴。

問題是你沒有處理你的繪畫會話。 CreateDrawingSession的返回值在完成繪製時需要處理。在通常通過「using」語句完成的C#中,儘管顯式調用Dispose具有相同的效果。害怕我不知道VB足以建議什麼VB的「使用」相當於。