Question

I ai un ScrollViewer WPF que j'utilise pour le panoramique (MouseDown, MouseMove, MouseUp) et je voudrais inclure un effet d'accélération qui incorpore l'inertie. Donc, si la souris se déplace au-delà d'une vitesse de seuil et je libère la souris, il continue à la casserole, mais ralentit en fonction de la vitesse initiale. Des idées, des pensées ou des exemples?

Était-ce utile?

La solution

Je l'ai fait essentiellement cela avant et a commencé en regardant ScrollViewer mais à la fin jetai et utilisé un Viewbox avec une toile que l'enfant pour le positionnement absolu de contenu (je soutenais aswel de zoom défilement, il était essentiellement DeepZoom sans que les images mises à l'échelle pour le zoom de façon il y avait pixellisation en zoomant droite). J'écrit le code pour déterminer la direction du geste et de la vitesse du geste des événements de souris et converti à un sens de défilement et la vitesse, puis animé les propriétés Canvas.Left et Canvas.Top du contenu (ce qui était scrollable dans la collection enfants de l'enfant de Viewbox toile) avec DoubleAnimation. Il a bien fonctionné, mais il peut y avoir une meilleure façon ... Heres un fil suggérant l'hébergement DeepZoom dans WPF via un contrôle Frame (bien que je ne le ferais pas de cette façon).

EDIT: Fondamentalement, le ScrollViewer était trop restreint. Même si vous entrez dans le ControlTemplate et obtenir des références à la barre de défilement directement, il est la position du pouce de ces barres de défilement que vous auriez besoin pour animer et je suis sûr ce que je trouve que je ne pouvais le faire (il était il y a presque 3 ans :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top