DirectX を使用して、ユーザーが Win8 アプリで「色付け」/描画できるようにしています。描画コードの多くは、MS が提供する Ink Drawing サンプルに似ています。
長々と申し訳ありません。問題を簡単に説明するのに苦労しています。
ユーザーが InkStroke を使用してライブ描画モードで新しい線を描画すると、追加されるセグメントを除いてその新しい線が表示されないという問題があります (マウスが移動している間、各仕上げセグメントが点滅してから消えます)。マウスを放すと、通常どおりにレンダリングされるストロークのコレクションに参加します。つまり、線の描画が完了すると、描画しようとしたものがきれいに見える/見える/描いたように見えます。
これは、スタンドアロンの C++ デスクトップ アプリとして正常に動作しました。ただし、SwapChainPanel を、メニューもある XAML ページに接続しました。その時、問題が発生しました。XAML メニューを使用して色を付ける画像を選択すると、デスクトップ アプリのコードでページが「描画モード」に切り替わります。同じ SwapChainPanel が、XAML ページと描画バッファーでのコンテキスト切り替えを処理します。問題は、XAML ページが描画バッファーと同じ SwapChainPanel を使用していることにあると思います。これは、「m_d3dContext->CopyResource(_currentBuffer.Get(), _previousBuffer.Get());」の呼び出しに干渉しています。これは、「現在描かれている」線の残りの古い部分が描画のためにキャプチャされる方法です。
どうすればこれを回避できますか? それぞれ独自の SwapChainPanel を持つ 2 つの XAML ページ (メニュー用、描画用) に分割する必要のないソリューションはありますか? それが最善の方法だとしても、1 つの XAML ページでそれを行う方法はありますか?