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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top