Comment faire pour récupérer facteur de zoom de WinForms PictureBox?

J'ai besoin de la position exacte de mon pointeur de la souris sur un contrôle PictureBox.

- Je utiliser l'événement MouseMove de la PictureBox.

Sur ce PictureBox, j'utilise le "zoom" de la propriété à afficher une image.

Quelle est la bonne façon pour obtenir la position de la souris sur l'original (sans zoom) de l'image?

Est-il un moyen de trouver le facteur d'échelle et l'utiliser?

Je pense qu'il faut utiliser imageOriginalSize/imageShowedSize pour récupérer ce facteur d'échelle.

J'utilise cette fonction:

float scaleFactorX = mypic.ClientSize.Width / mypic.Image.Size.Width;
float scaleFactorY = mypic.ClientSize.Height / mypic.Image.Size.Height;

Est possible d'utiliser cette valeur pour obtenir la bonne position du curseur sur l'image?

Je suppose que vous pouvez essayer: Point cursorPosition = mypic.PointToClient(Curseur.Position); Point positionOverImage = new Point(cursorPosition.X / scaleFactorX, cursorPosition.Y / scaleFactorY);. Cependant, je suppose qu'il peut y avoir quelques problèmes avec précision lorsque vous comptez facteur de zoom à l'aide de cette méthode. Je vous suggère à l'échelle de l'image sur votre propre.
merci,mais ne fonctionne pas.position est incorrecte,je reçois la même valeur lors de l'utilisation de pointtoclient et eventmouseargs position.
Merci de poster l'extrait de code de calcul des coordonnées que vous utilisez actuellement.
Rectangle sourceRec = new Rectangle((int)(e.X / currentScale), (int)(e.Y / currentScale), 1, 1);
Quand vous dites que vous avez besoin de vos coordonnées de la souris à l'égard de l'image non étirée, ce qui est le point d'ancrage que vous attendez de votre image non étirée? Est-il ancré en haut à gauche? Ancrée au centre?

OriginalL'auteur devilkkw | 2012-05-06