针对这个关于 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);
}
}
关于如何使这种方法起作用的任何想法?