アプリケーションでVirtualSurfaceImageSourceを使用することを検討しており、 Direct2D マガジン アプリのサンプルに似たものを実装しましたが、仮想サーフェスが表示領域の数倍になると問題が発生しました。
ScrollViewer
基本的に、.を含む水平スクロールがありますImage
。画像のソースが広いVirtualSurfaceImageSource
(少なくとも ~10000 x 500 ピクセル)。の幅ScrollViewer
は 1280 ピクセルです。
スクロール ビューアーをタッチ パンでスクロールすると、画像がちらつきます。画像の一部が消えて再描画されます。これは通常、慣性スクロールが停止したときに発生します。ビューにスクロールすると、画像はすでに完全に描画されていますが、何らかの理由でクリアされてIVirtualSurfaceUpdatesCallbackNative::UpdatesNeeded()
呼び出されます。
問題を説明するビデオをアップロードしました。スクロールが停止したときに何が起こるかを見てください (0:02、0:17 など)。
なぜこれが起こっているのですか?
また、画像の幅が 5000 px 以下の場合、ちらつきが発生しないことにも気付きました。
これを再現する場合は、Direct2D マガジン アプリのサンプルから始めて、タグの下の Sample.story にテキストを追加します<text name="butterfly-body">
。既存のテキストを 10 回ほどコピーするだけです。バタフライ ページを両方向にさまざまな速度でスクロールしてみてください。同じ問題と思われるものが表示されるはずです。
MSDN フォーラムでこの質問をしましたが、今のところ回答がありません。