У меня возникла проблема, и я надеюсь, что кто-то сможет ответить на вопрос. У меня есть проект Deep Zoom, в котором я использовал стандартный проект с глубоким масштабированием, который помещает поведение DeepZommInitializer в элемент управления MultiScaleImage. Я пытаюсь сдержать перетаскивание, чтобы убедиться, что пользователь не перетаскивает изображение с экрана (и, следовательно, не может найти изображение). Я добавил кнопку «Домой», которая вернет изображение в исходное местоположение с увеличением 1. Во всяком случае, вот код, который я сейчас имею (просмотрел в Интернете, ища ответ).Silverlight DeepZoom Dragging позволяет перетащить MultiScaleImage с экрана
// msi is the multiscale image
msi.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
{
lastMouseDownPos = e.GetPosition(msi); // class level var
lastMouseViewPort = msi.ViewportOrigin; // class level var
mouseDown = true; // class level var
msi.CaptureMouse();
};
msi.MouseMove += delegate(object sender, MouseEventArgs e)
{
lastMousePos = e.GetPosition(msi);
if (duringDrag)
{
Point newPoint = lastMouseViewPort;
newPoint.X += (lastMouseDownPos.X - lastMousePos.X)/msi.ActualWidth * msi.ViewportWidth;
newPoint.Y += (lastMouseDownPos.Y - lastMousePos.Y)/msi.ActualWidth * msi.ViewportWidth;
var limits = new Rect(new Point(1, 1/msi.AspectRatio), new Point(-1, -1/msi.AspectRatio));
if (newPoint.X > limits.Right * .999)
{
newPoint.X += (-2 * (lastMouseDownPos.X - lastMousePos.X))/msi.ActualWidth * msi.ViewportWidth; // Reverses direction when going off left
}
if (newPoint.Y > limits.Bottom * .999)
{
newPoint.Y += (-2 * (lastMouseDownPos.Y - lastMousePos.Y))/msi.ActualWidth * msi.ViewportWidth; // Reverses direction when going off top of screen
}
msi.ViewportOrigin = lastMouseViewPort = newPoint;
lastMouseDownPos = lastMousePos;
}
};
Мне действительно нужно решение, которое работает справа и внизу, но в тот момент, когда я увеличиваю все значения, все меняется. Мой лимитированный код работает, если уровень масштабирования равен 1. Я не могу поверить, что этого не найти в Интернете! Но в тот момент, когда изменяется масштаб, все выходит из окна (значения для newPoint не соответствуют ожидаемому диапазону). Любая помощь будет фантастической!
grt, что u найти решение. Вы можете отметить собственный ответ :) – Malcolm