2010-04-01 21 views
0

Plattform:WPF 3D: modèle Zoom avec pointeur souris coordonnées comme centre

  • 3,5 .NET avec C#
  • WPF
  • 3DTools

J'utilise 3DTools de le site Codeplex (3D Tools) pour la rotation et le panoramique de modèles 3D. Cela fonctionne bien. La classe Trackball contient également une méthode pour zoomer des modèles avec la molette de la souris. Cependant, cette méthode met toujours à l'échelle le modèle avec Point (0,0,0) comme centre du zoom. Mais je voudrais zoomer sur les coordonnées du pointeur de la souris (comme Google Maps, ici vous ne faites pas de zoom au centre de la carte mais aux coordonnées du pointeur de la souris).

J'ai essayé différentes choses à résoudre ce problème:

  • mis CenterX/Y/Z de l'objet ScaleTransform3D de la classe trackball au pointeur de la souris coordonne -> il ne fonctionne pas
  • Panoramique du modèle après le zoom -> n'a pas fonctionné aussi; parce que les coordonnées du pointeur de la souris ne changent pas, donc je ne peux pas calculer la distance de panoramique, par ex.
    • MousePointer Coordonnées avant le zoom -> 334, 210
    • appel Zoom (-e.Delta) de la classe Trackball
    • MousePointer Coordonnées après le zoom -> 334, 210
    • si le MousePointer Coordonnées changerait , par exemple 330, 205, je pourrais un panoramique du modèle 4 points de gauche et 5 points vers le haut (mon programme dispose également d'un mode 2D et il les coordonnées modifier) ​​
  • déplacer la position de la caméra -> ne fonctionne pas; en fonction de la position actuelle de la caméra et la MouseWheelEventArgs.Delta je calcule la nouvelle position de la caméra

A quelqu'un une idée de comment ce problème peut être résolu?

Répondre

0

Le projet 3DTools ne fonctionne pas correctement sur .NET 3.5, car il est destiné à fonctionner sur WPF de version .NET 3.0.

La mission (donc la fonctionnalité) des outils 3D est de faciliter le codage des contrôles 2D sur 3D sur WPF de .NET 3.0. Si vous avez .NET 3.5, vous avez déjà un support pour la 2D sur la programmation 3D et aussi le support WPF XAML.

Bien que .NET 3.5 soit essentiellement .NET 3.0 SP1 + LINQ, le sous-système WPF sur .NET 3.0 SP1 a des différences assez importantes comme ci-dessus, par rapport à la version WPF de .NET 3.0.

Visitez cette page sur MSDN Library:

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

également le suivi de la souris ne pas bien pris en charge sur le WPF de .NET 3.0 SP1. Je vous suggère de réécrire le code de suivi de la souris et de le recompiler sous l'environnement .NET 3.5 (ciblez le projet vers .NET 3.5).