fix scale problem in DefaultViewPort::controlImagePosition()

pull/20368/head
Xinguang Bian 4 years ago
parent 9a9954a036
commit 5627a0cbdf
  1. 9
      modules/highgui/src/window_QT.cpp

@ -2883,18 +2883,19 @@ inline bool DefaultViewPort::isSameSize(IplImage* img1, IplImage* img2)
void DefaultViewPort::controlImagePosition()
{
qreal left, top, right, bottom;
qreal factor = 1.0 / param_matrixWorld.m11();
//after check top-left, bottom right corner to avoid getting "out" during zoom/panning
param_matrixWorld.map(0,0,&left,&top);
if (left > 0)
{
param_matrixWorld.translate(-left,0);
param_matrixWorld.translate(-left * factor, 0);
left = 0;
}
if (top > 0)
{
param_matrixWorld.translate(0,-top);
param_matrixWorld.translate(0, -top * factor);
top = 0;
}
//-------
@ -2903,12 +2904,12 @@ void DefaultViewPort::controlImagePosition()
param_matrixWorld.map(sizeImage.width(),sizeImage.height(),&right,&bottom);
if (right < sizeImage.width())
{
param_matrixWorld.translate(sizeImage.width()-right,0);
param_matrixWorld.translate((sizeImage.width() - right) * factor, 0);
right = sizeImage.width();
}
if (bottom < sizeImage.height())
{
param_matrixWorld.translate(0,sizeImage.height()-bottom);
param_matrixWorld.translate(0, (sizeImage.height() - bottom) * factor);
bottom = sizeImage.height();
}

Loading…
Cancel
Save