から最後に描画したフレームを保持して、その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)またはそのオーバーロードの 1 つを使用するだけです。例えば:
void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
args.DrawingSession.DrawImage(offscreen, 23, 34);
}