2

我有一个大图像,我需要在一个较小的容器中显示(或像这样的 smthg)。用户应该能够上下左右移动图像。它应该像谷歌地图。

你知道我可以从哪里开始以及如何解决这个问题吗?

4

1 回答 1

1

也许像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;
    }
}
于 2011-04-09T17:28:42.900 回答