2015-12-20 13 views
1

Я хочу сохранить последний нарисованный кадр из CanvasAnimatedControl, чтобы нарисовать поверх него.
Есть ли встроенная функция для этого, или мне нужно использовать двойную буферизацию.Запретить Win2D Animated Canvas от очистки

Я хочу реализовать this с win2d.

ответ

3

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); 
}