Есть ли способ выполнить фиксированное масштабирование для многокамерного изображения при глубоком увеличении? т.е. нажмите один раз, чтобы приблизить точку X, Y к 2x, нажмите еще раз, чтобы восстановить исходное положение и уровень масштабирования?
Я написал код для увеличения и уменьшения масштаба, но вызов zoomaboutlogicalpoint в середине процесса масштабирования приводит к слишком большому уменьшению масштаба (я думаю, из-за фактора 1/2 в событии увеличения мыши - могу ли я получить уровень масштабирования? ). Кроме того, я хотел бы, чтобы уменьшенное изображение было центральным (я полагаю, что я изменил точку для увеличения до середины изображения, но это, похоже, не работает, возможно, мне нужно учесть положение ViewPort?)
, например
private void msi_MouseLeftButtonDown (отправитель объекта, MouseButtonEventArgs e)
{
Point p = e.GetPosition (msi);
Зум (2, р);
}
private void msi_MouseLeftButtonUp (отправитель объекта, MouseButtonEventArgs e)
{
Point p = e.GetPosition (msi);
Зум (1/2, р);
}
public void Zoom(double zoom, Point pointToZoom)
{
bool zoomingIn = zoom > 1;
bool zoomingOut = zoom < 1;
double minViewportWidth = 0.05;
double maxViewportWidth = 1;
if (msi.ViewportWidth < minViewportWidth && zoomingIn)
{
return;
}
if (msi.ViewportWidth > maxViewportWidth && zoomingOut)
{
return;
}
Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom);
this.msi.ZoomAboutLogicalPoint(zoom, logicalPoint.X, logicalPoint.Y);
}
Спасибо.