1

私はここでかなり大きな問題を抱えています。描画アプリケーション(Caliburn.Micro)でMVVMを使用していますが、ライブプレビューで図形を描画するための合理的な方法が見つかりません。

描画キャンバスは、入力を取得してデータをモデルにフィードするキャンバスと、各レイヤーに1つずつ、多数のキャンバスを保持するグリッドで構成されます。モデルはイベントを発生させます(例としてLineを使用します):

  1. Lineを作成するためのイベント-始点、終点、色、太さ、および自動生成されたIDのプロパティを持つ単純なLineオブジェクトを作成します。イベントには、追加された行とレイヤーがあります。
  2. マウスを動かすと、1。で作成されたラインオブジェクトの終点が更新され、更新された形状とそのレイヤーをパラメータとして新しいイベントが発生します。
  3. マウスを上に向けると2.も起こります。

これらのイベントに登録するViewModelで、同等のWPFシェイプ(この場合はSystem.Windows.Shapes.Line)を修正キャンバスに追加し、シェイプが追加されたときにパラメーターを設定します。しかし、マウスを動かして描画された形状のライブプレビューを表示するときに、形状パラメーターを更新するのに堅牢なアイデアは思いつきません。

依存関係のプロパティを使用してみましたが、機能せず、やり過ぎのようでした(これらすべてのキャンバスに含まれるシェイプの数が原因です)。Lineも延長してみましたが、クラスが封印されているのでできません。また、描画される形状(サイズ変更、回転など)を操作する必要があります。

4

2 に答える 2

1

writeablebitmap とWriteableBitmapEx拡張機能を調べます。これは、レンダリングする必要があるものの数に応じて、かなり優れたパフォーマンスを発揮します。一度に何千ものものを画面に表示する必要がある場合は、SlimDx や SharpDx などのラッパーで DirectX を使用することを検討してください。

于 2013-03-06T15:20:14.670 に答える
0

つまり、基本的に 2 つの行が必要です。1 つは以前のように見え、もう 1 つはユーザーが変更を「コミット」したときのように見えます。2 つの同一の形状タイプを保持するコンテナー クラスを作成し、ユーザーが編集モードのときに 2 番目の形状タイプを移動することができます。ユーザーが編集モードを終了すると、最初の形状を保持する (ユーザーがキャンセルした) か、2 番目の形状を新しい唯一の最初の形状にすることができます。

于 2013-03-06T15:08:24.670 に答える