2008-09-25 6 views
16

J'ai une toile sur laquelle je dessine un tas de formes et d'autres éléments de l'interface utilisateur. Cette toile peut être très grande donc je veux mettre cela dans un panneau qui me permet de zoomer en utilisant la souris et faire défiler en faisant glisser la souris, tout comme Google Maps. La chose la plus proche que j'ai pu trouver était le ScrollViewer mais évidemment ce n'est pas assez proche.Panneau de défilement semblable à Google Maps dans WPF

Est-ce que quelqu'un a fait cela dans WPF et possède un code XAML et/ou C#?

+2

+1 à cette question - je veux voir quelque chose comme ça aussi! =) –

Répondre

4

Je asked last week si DeepZoom était prévu pour WPF (puisqu'il est disponible sur Silverlight). J'ai reçu un lien vers ce code qui ressemble beaucoup à votre solution: Pan and Zoom in WPF

+0

+1 pour le lien génial - SO FTW ... – jnoss

2

Je pense que vous êtes sur la bonne voie en utilisant une grande toile/grille avec le ScrollViewer. J'ai récemment fait quelque chose de similaire en utilisant la même configuration. Pour zoomer et dézoomer, vous pouvez utiliser une ScaleTransform dans la propriété LayoutTransform du canevas, puis l'accrocher jusqu'à l'événement MouseWheel. Vous pouvez changer le ScaleX et ScaleY pour "zoomer" dedans et dehors, et tous les éléments enfants du canevas vont "zoomer" aussi bien. Pour le panoramique, vous pouvez masquer les barres de défilement dans ScrollViewer et utiliser l'événement MouseMove pour appeler la fonction ScrollViewers ScrollToHorizontalOffset() pour déplacer les barres de défilement par programme. Utilisez le lien que "Optimal Solutions" posté, c'est exactement comment le faire.

Si j'étais à ma machine dev, je pourrais vous donner un exemple de code.

0

Découvrez this CodeProject article de Sacha ... Il a un FrictionScrollViewer qui fait le défilement en faisant glisser la souris (supporte également une physique ...)