这个图像平移算法出了什么问题?

时间:2009-04-22 13:43:38

标签: wpf image zoom pan

为响应this question关于WPF中的缩放和平移,我建议使用ScaleTransform并更新MouseMove事件中的RenderTransform原点。这有效,但我不满意平移运动与鼠标不匹配的事实。我可以看到这个算法的问题是什么,但是正确的实现仍然无法实现。

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);
    }
}

关于如何使这种方法有效的任何想法?

1 个答案:

答案 0 :(得分:1)

这很奇怪,它不适合你。我用类似的方式进行平移。但我除以scaleTransform.ScaleX。

另一个区别是我将TranslateTransform添加到TransformGroup并修改了翻译的X和Y,而不是使用RenderTransformOrigin。