J'ai un problème lorsque je fais un zoom avant/arrière sur une image dans un scrollviewer. Lorsque j'utilise le bouton de zoom avant, j'utilise une double animation pour la largeur/hauteur de l'image à 1,25 de sa taille d'origine chaque fois que le bouton est cliqué. Il en va de même pour le bouton de zoom arrière qui règle le facteur d'échelle à 0,75. Jusqu'ici tout va bien.Zoomer/faire défiler jusqu'à
Le problème est que sur la base de l'endroit où je clique par rapport au centre de l'id de scrollviewer comme pour faire défiler vers le point de clic. Je calcule un delta x/y basé sur ce qui est utilisé pour déterminer la direction du défilement sur les axes x et y.
double deltaX = (ClickPosition.X - center.X)
double deltaY = (ClickPosition.Y - center.Y)
Maintenant, je dois tenir compte du facteur de zoom de l'image lors de l'application du delta aux barres de défilement verticales et horizontales (qui aussi sont animés d'une double animation).
Lorsque j'effectue un zoom et que je défile en même temps, la position finale ne se termine pas là où je le souhaite. L'origine de la mise à l'échelle de l'image semble toujours être 0,0 (coin supérieur gauche) de l'image, donc je ne sais pas comment gérer cela, donc cliquer sur le côté gauche du centre donne un défilement plus fort vers la gauche que de cliquer sur le côté droit du centre.
Exemple: http://212.214.41.66/SilverlightZoom/RealQImageMapTestPage.html
Source: http://212.214.41.66/SilverlightZoom/ImageMap.zip
J'ai regardé votre code. Y a-t-il une raison pour laquelle vous mettez à l'échelle l'image en utilisant la largeur et la hauteur au lieu d'utiliser une transformation de mise à l'échelle? – Johannes