1

我想保留最后绘制的帧以在其上CanvasAnimatedControl绘制。
是否有内置功能可以做到这一点,或者我必须使用双缓冲。

我想用win2d实现这个。

4

1 回答 1

3

如此处所述:

创建绘图会话时,控件总是由 Win2D 自动清除。CanvasRenderTargets不是。这样,应用程序就有能力对 CanvasRenderTargets 进行增量更改,并避免每次都重绘整个场景。

CanvasDevice device = CanvasDevice.GetSharedDevice();
CanvasRenderTarget offscreen = new CanvasRenderTarget(device, width, height, 96);
using (CanvasDrawingSession ds = offscreen.CreateDrawingSession())
{
    //ds.Clear(Colors.Black); // no clear and you are good to go.
    ds.DrawRectangle(100, 200, 5, 6, Colors.Red);
}

请注意,有一个对Clear的方法调用。没有这个,位图将使用未定义的内容进行初始化。

 

要将 CanvasRenderTarget 绘制到另一个绘图会话,只需使用DrawImage(ICanvasImage)或其重载之一。例如:

void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
    args.DrawingSession.DrawImage(offscreen, 23, 34);
}
于 2015-12-21T08:11:19.107 回答