2016-05-17 118 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的“使用”相当于。