Positioning and Centering a Deep Zoom
I have seen a few people struggling with how to center their single image Deep Zooms on a specific point on their screen. Here's how I do it.
void msi_Reset()
{
msi.UseSprings = false;
msi.ViewportOrigin = new Point(0, 0);
msi.MotionFinished += new RoutedEventHandler(msi_Center);
double MSISize = 3;
if (msi.AspectRatio > 1)
{
msi.ViewportWidth = MSISize;
}
else
{
msi.ViewportWidth = MSISize / msi.AspectRatio;
}
}
void msi_Center(object sender, RoutedEventArgs e)
{
msi.MotionFinished -= msi_Center;
Point center = msi.ElementToLogicalPoint(new Point(-msi.ActualWidth / 2, -msi.ActualHeight / 2));
center.X += 0.5;
center.Y += 0.5 / msi.AspectRatio;
msi.ViewportOrigin = center;
msi.UseSprings = true;
}