我想保留最后绘制的帧以在其上CanvasAnimatedControl
绘制。
是否有内置功能可以做到这一点,或者我必须使用双缓冲。
我想用win2d实现这个。
如此处所述:
创建绘图会话时,控件总是由 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);
}