4

私は現在、8800x6800 以上の大きなエンジニアリング図面を表示する必要があるアプリケーションに取り組んでいます。要件には、ユーザーが画像をパンおよびズームできる必要があることが記載されています。理想的には、画像にも注釈を付けられるようにしたいと考えています。Windows フォト ビューアーを見ると、私がエミュレートしようとしているパフォーマンスと機能 (注釈部分を除く) が表示されます。

これまでのところ、画像を表示するためにいくつかの異なるアプローチを試しましたが、探しているパフォーマンスを提供するものはないようです。大量のメモリを消費するか、遅いかのどちらかです。これらは私が取ったアプローチです:

  • Viewbox子供のImage頃に。メモリ使用量は問題ありませんが、サイズ変更Viewboxが遅いです。そのため、このアプローチでズーム/パンをまだ試していません。
  • InkCanvasセットをImage背景または子として使用します。このアプローチでは、ズーム/パンはまあまあのようScaleTransformTranslateTransform 見えましたが、メモリ使用量は 450 ~ 600 MB の範囲で増加する可能性があります。

これは、.NET/WPF を使用した画像操作への私の最初の進出であり、この件に関する私の知識はかなり限られています。大きな画像、特に WPF を処理するためのベスト プラクティスは何ですか? 画像のタイリング (ディープ ズームなど) が役立つことを読んだことがありますが、これを行う方法や、私の状況でそれが最善のアイデアであるかどうかはわかりませんでした。これをよりよく理解するのに役立つリソースを知っていますか?

4

1 に答える 1

1

画像を別々の部分に分割し、小さなサブセットのみを一度に表示してパフォーマンスを向上させることを意味する場合、「タイリング」によって、これは「仮想化」と呼ばれます。

Microsoft は項目の仮想化に関する優れたブログを公開しており、仮想化されたコントロールの開始点として使用できる VirtualCanvas の参照実装も提供しています。

リンクはこちら: https://docs.microsoft.com/en-us/archive/blogs/jgoldb/virtualized-wpf-canvas

このブログには、ディスカッションの一部としてズームとスケールが含まれていることに注意してください。また、UI の応答性を最適化するためのスムーズなスクロールとタイルのプリエンプティブな読み込みに関するディスカッションも含まれています。

于 2014-07-25T13:49:17.090 に答える