Cosa c'è di sbagliato in questa immagine panning algoritmo?
Domanda
In risposta a questa domanda su zoom e panoramica in WPF ho fatto il suggerimento di utilizzare uno ScaleTransform e aggiornare l'origine RenderTransform nell'evento MouseMove. Questo funziona ma non sono contento del fatto che il movimento di panning non corrispondono del tutto con il mouse. Posso vedere qual è il problema con questo algoritmo è, ma la corretta attuazione continua a sfuggirmi.
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);
}
}
Tutte le idee su come posso fare questo lavoro approccio?
Soluzione
E 'abbastanza strano che non funziona per voi. Sto usando modo simile per fare il panning. Ma I fare dividere il delta da scaleTransform.ScaleX.
L'altra differenza è che aggiungo un TranslateTransform al TransformGroup e modificare X e Y della traduzione invece di usare RenderTransformOrigin.