我有一个大图像,我需要在一个较小的容器中显示(或像这样的 smthg)。用户应该能够上下左右移动图像。它应该像谷歌地图。
你知道我可以从哪里开始以及如何解决这个问题吗?
也许像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;
}
}