diff --git a/viewer/image_viewer/JFJochImage.cpp b/viewer/image_viewer/JFJochImage.cpp index a11db19e..0e278524 100644 --- a/viewer/image_viewer/JFJochImage.cpp +++ b/viewer/image_viewer/JFJochImage.cpp @@ -957,7 +957,7 @@ void JFJochImage::setZoom(double input) { scale_factor = input; if (!scene()) return; - scale(input, input); + setTransform(QTransform::fromScale(input, input)); updateOverlay(); emitViewportChanged(); } diff --git a/viewer/windows/JFJochMagnifierWindow.cpp b/viewer/windows/JFJochMagnifierWindow.cpp index 8027652e..06f1f109 100644 --- a/viewer/windows/JFJochMagnifierWindow.cpp +++ b/viewer/windows/JFJochMagnifierWindow.cpp @@ -22,11 +22,18 @@ void JFJochMagnifierWindow::imageLoaded(std::shared_ptr m_image->setImage(nullptr); return; } + + const double scale = m_have_image ? m_image->GetScaleFactor() : m_magnification; + const QPointF center = m_have_image + ? m_image->mapToScene(m_image->viewport()->rect().center()) + : QPointF(image->Dataset().experiment.GetXPixelsNum() * 0.5, + image->Dataset().experiment.GetYPixelsNum() * 0.5); + const auto &exp = image->Dataset().experiment; auto si = std::make_shared(); si->image = CompressedImage(image->Image(), exp.GetXPixelsNum(), exp.GetYPixelsNum()); m_image->setImage(si); - m_image->setZoom(m_magnification); + m_image->applyViewport(QTransform::fromScale(scale, scale), center); m_have_image = true; }