为响应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);
}
}
关于如何使这种方法有效的任何想法?
答案 0 :(得分:1)
这很奇怪,它不适合你。我用类似的方式进行平移。但我做除以scaleTransform.ScaleX。
另一个区别是我将TranslateTransform添加到TransformGroup并修改了翻译的X和Y,而不是使用RenderTransformOrigin。