我想保留CanvasAnimatedControl
中最后绘制的帧以在其上方绘制。
是否有内置功能可以执行此操作,或者我是否必须使用双缓冲。
我想用win2d实现this。
最佳答案
如here所述:
创建绘图会话时,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);
}