阻止清除Win2D动画画布

本文关键字:动画 Win2D 清除 | 更新日期: 2023-09-27 18:27:33

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

我想用win2d实现这一点。

阻止清除Win2D动画画布

如上所述:

创建绘图任务时,Win2D始终会自动清除控件。CanvasRenderTarget不是。通过这种方式,应用程序能够对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);
}