Движение изображения как Google Maps - PullRequest
2 голосов
/ 09 апреля 2011

У меня есть большое изображение, которое мне нужно показать в меньшем контейнере (или что-то вроде этого). Пользователь должен иметь возможность перемещать изображение вверх, вниз, влево и вправо. Это должно быть похоже на Google Maps.

У вас есть идея, с чего я могу начать и как это решить?

1 Ответ

1 голос
/ 09 апреля 2011

Может быть, что-то вроде DeepZoom подойдет.


Вы также можете создать простой UserControl или CustomControl с функцией панорамирования, например, иметь холст, который обрабатывает некоторые события мыши для управленияTranslateTransform на вашем изображении, которое должно быть потомком холста.

Схема обработки событий:

// Add this transform to the image as RenderTransform
private TranslateTransform _translateT = new TranslateTransform();
private Point _lastMousePos = new Point();

private void This_MouseDown(object sender, MouseButtonEventArgs 
{
    if (e.ChangedButton == PanningMouseButton)
    {
        this.Cursor = Cursors.ScrollAll;
        _lastMousePos = e.GetPosition(null);
        this.CaptureMouse();
    }
}

private void This_MouseUp(object sender, MouseButtonEventArgs e)
{
    if (e.ChangedButton == PanningMouseButton)
    {
        this.ReleaseMouseCapture();
        this.Cursor = Cursors.Arrow;
    }
}

private void This_MouseMove(object sender, MouseEventArgs e)
{
    if (this.IsMouseCaptured)
    {
        Point newMousePos = e.GetPosition(null);
        Vector shift = newMousePos - _lastMousePos;
        _translateT.X += shift.X;
        _translateT.Y += shift.Y;
        _lastMousePos = newMousePos;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...