Что не так с этим алгоритмом панорамирования изображения? - PullRequest
0 голосов
/ 22 апреля 2009

В ответ на этот вопрос о масштабировании и панорамировании в 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);
    }
}

Любые идеи о том, как я могу заставить этот подход работать?

1 Ответ

1 голос
/ 22 апреля 2009

Довольно странно, что это не работает для вас. Я использую аналогичный способ сделать панорамирование. Но я делаю делим дельту на scaleTransform.ScaleX.

Другое отличие состоит в том, что я добавляю TranslateTransform к TransformGroup и изменяю X и Y перевода вместо использования RenderTransformOrigin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...