代码之家  ›  专栏  ›  技术社区  ›  Ian Oakes

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

  •  0
  • Ian Oakes  · 技术社区  · 16 年前

    响应 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 回复  |  直到 16 年前
        1
  •  1
  •   arconaut    16 年前

    奇怪的是它对你不起作用。我用类似的方法来做平移。但我 将delta除以scaleTransform.scalex。

    另一个区别是,我将translateTransform添加到transformGroup,并修改翻译的x和y,而不是使用renderTransformOrigin。

    推荐文章