Domanda

Ho una WPF ScrollViewer che uso per panning (MouseDown, MouseMove, MouseUp) e desidero includere un effetto di accelerazione che incorpora inerzia. Quindi, se il mouse si muove al di là di una velocità di soglia e ho rilasciare il mouse, si continua a eseguire una panoramica, ma rallenta in funzione della velocità iniziale. Tutte le idee, pensieri o esempi?

È stato utile?

Soluzione

L'ho fatto in fondo questo prima e iniziato, cercando in ScrollViewer, ma alla fine ha gettato via e usato un Viewbox con una tela come il bambino per il posizionamento assoluto di contenuti (ero supporto zoom Viaggiavamo come scorrimento, era fondamentalmente DeepZoom senza le immagini in scala di ingrandimento così c'era pixelation quando l'ingrandimento a destra in). Ho scritto il codice per determinare la direzione gesto e la velocità del gesto dagli eventi del mouse e convertito ad un direzione di scorrimento e la velocità e poi animato la proprietà Canvas.Left e Canvas.Top del contenuto scorrevole (che era nella collezione bambini del figlio del Viewbox tela), con DoubleAnimation. Ha funzionato bene, ma ci può essere un modo migliore ... heres un filo suggerendo che ospita DeepZoom in WPF tramite un controllo frame (anche se non mi fare così).

EDIT: Fondamentalmente lo ScrollViewer è stato semplicemente troppo limitando. Anche se si entra in ControlTemplate e ottenere riferimenti alle barre di scorrimento direttamente, è la posizione del pollice di queste barre di scorrimento che si avrebbe bisogno di animare e sono abbastanza sicuro che questo è quello che ho trovato non ho potuto farlo (era quasi 3 anni fa :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top