1

プラットフォーム:

  • C# を使用した .NET 3.5
  • WPF
  • 3Dツール

3D モデルの回転とパンのために、Codeplex サイト ( 3D Tools )の 3DTools を使用しています。これはうまくいきます。Trackball クラスには、マウス ホイールでモデルをズームするためのメソッドも含まれています。ただし、このメソッドは、常に Point(0,0,0) をズームの中心としてモデルをスケーリングします。しかし、マウスポインターの座標にズームしたいと思います(Googleマップのように、ここではマップの中心ではなくマウスポインターの座標にズームします)。

この問題を解決するためにさまざまなことを試しました:

  • Trackball クラスの ScaleTransform3D オブジェクトのCenterX/Y/Zをマウスポインタの座標に設定→ 動かなかった
  • ズーム後にモデルをパン-> 機能しませんでした。マウスポインターの座標が変わらないため、パン距離を計算できません。
    • ズーム前の MousePointer 座標 -> 334、210
    • Trackball クラスから Zoom(-e.Delta) を呼び出す
    • ズーム後の MousePointer 座標 -> 334、210
    • MousePointer Coordinates が 330, 205 などに変更される場合、モデルを左に 4 ポイント、上に 5 ポイントパンすることができます (私のプログラムには 2D モードもあり、そこで座標が変更されます)。
  • カメラの位置を移動-> 機能しませんでした。現在のカメラ位置と MouseWheelEventArgs.Delta に基づいて、新しいカメラ位置を計算しました

この問題を解決する方法を知っている人はいますか?

4

1 に答える 1

0

3DTools プロジェクトは、.NET 3.0 リリースの WPF で実行することを意図しているため、.NET 3.5 ではうまく機能しません。

3D ツールの使命 (つまり機能) は、.NET 3.0 の WPF で 3D 上の 2D コントロールのコーディングを容易にすることです。.NET 3.5 を使用している場合は、2D on 3D プログラミングが既にサポートされており、WPF XAML もサポートされています。

.NET 3.5 は基本的に .NET 3.0 SP1 + LINQ ですが、.NET 3.0 SP1 上の WPF サブシステムは、.NET 3.0 リリースの WPF と比較して、上記のような大きな違いがあります。

MSDN ライブラリの次のページにアクセスしてください。

http://msdn.microsoft.com/en-us/library/bb613588(v=VS.90).aspx

また、マウス トラッキングは、.NET 3.0 SP1 の WPF では十分にサポートされていません。マウス トラッキング コードを書き直して、.NET 3.5 環境で再コンパイルすることをお勧めします (プロジェクトのターゲットを .NET 3.5 にします)。

于 2010-04-01T10:57:31.937 に答える