Pergunta

Eu tenho um WPF ScrollViewer que eu uso para panning (Mousedown, Mousemove, MouseUp) e gostaria de incluir um efeito de aceleração que incorpora inércia. Portanto, se o mouse se mover além de uma velocidade limite e eu libero o mouse, ele continua a se panar, mas diminui a velocidade em função da velocidade inicial. Alguma ideia, pensamentos ou exemplos?

Foi útil?

Solução

Eu já fiz basicamente isso antes e comecei olhando para o scrollViewer, mas no final o jogou fora e usou uma caixa de vista com uma tela como criança para o posicionamento absoluto do conteúdo (eu estava apoiando o zoom aswel como rolagem, era basicamente Deepzoom sem as imagens em escala para o zoom, houve pixelação quando diminuíram o zoom). Escrevi código para determinar a direção do gesto e a velocidade do gesto dos eventos do mouse e converti isso em uma direção de rolagem e velocidade e depois animei a tela. da tela infantil do ViewBox) com Doubleanimation. Funcionou bem, no entanto, pode haver uma maneira melhor ...aqui está Um thread sugerindo hospedagem Deepzoom no WPF através de um controle de quadros (embora eu não faria dessa maneira).

EDIT: Basicamente, o ScrollViewer foi restringindo demais. Mesmo se você entrar no ControlTemplate e obter referências diretamente nas barras de rolagem, é a posição do polegar dessas barras de rolagem que você precisaria para animar e tenho certeza de quase 3 anos atrás :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top