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);
}
}
このアプローチを機能させる方法についてのアイデアはありますか?