En réponse à this question sur le zoom et le panoramique dans WPF, j'ai suggéré d'utiliser une ScaleTransform et de mettre à jour l'origine RenderTransform dans l'événement MouseMove. Cela fonctionne mais je ne suis pas content du fait que le mouvement de panoramique ne correspond pas tout à fait à la souris. Je peux voir quel est le problème avec cet algorithme, mais la mise en œuvre correcte continue de m'échapper.Quel est le problème avec cet algorithme de panoramique d'image?
private void image_MouseMove(object sender, MouseEventArgs e)
{
if (image.IsMouseCaptured)
{
Vector v = start - e.GetPosition(image);
// this calculates the deltas relative to the original size of the image
// but does not take into account the transformed size, but transforming the
// size like image.ActualWidth * scaleTransform.ScaleX does not help
double deltax = v.X/image.ActualWidth;
double deltay = v.Y/image.ActualHeight;
image.RenderTransformOrigin = new Point(orgin.X + deltax, orgin.Y + deltay);
}
}
Des idées sur comment je peux faire fonctionner cette approche?
Merci pour le pointeur, j'aurais dû utiliser un TraslateTransform depuis le début, mais j'essayais de tout faire en utilisant simplement un ScaleTransform, j'ai mis à jour la réponse à la question originale en utilisant votre suggestion. Merci. –