В ответ на этот вопрос о масштабировании и панорамировании в WPF я предложил использовать ScaleTransform и обновить источник RenderTransform в событии MouseMove. Это работает, но меня не устраивает тот факт, что движение панорамирования не совсем совпадает с мышью. Я вижу, в чем проблема с этим алгоритмом, но правильная реализация по-прежнему ускользает от меня.
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);
}
}
Любые идеи о том, как я могу заставить этот подход работать?