阻止清除Win2D动画画布
本文关键字:动画 Win2D 清除 | 更新日期: 2023-09-27 18:27:33
我想保留CanvasAnimatedControl
中最后一个绘制的帧,以便在它上面绘制。
有没有内置功能可以做到这一点,或者我必须使用双缓冲。
我想用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);
}