繁体   English   中英

Qt | QPixmap缩放比例错误

[英]Qt | QPixmap scaling incorrectly

我有一个QPixmap,我将其设置为在调整窗口大小时根据比例进行调整。 首次加载图像时,该比例很明显,但是当我调整图像大小时,会扭曲所有图像。 它设法做到这一点: 调整窗口大小之前的图像 对此: 调整窗口大小之前的图像

相关代码:

void MainWindow::resizeEvent(QResizeEvent *)
{
    QPixmap pix = ui->labelImage->pixmap()->scaled(ui->labelImage->size(),
                                                   Qt::KeepAspectRatio);
    ui->labelImage->setPixmap(pix);
}

您正在从窗口小部件读取当前像素图,对其进行缩放,然后将缩放后的像素图写入窗口小部件。 请考虑一下,如果小部件变得非常小,然后将其调整为更大的尺寸会发生什么—由于使用了缩放转换,因此会出现很多工件。

我认为更好的方法是将原始的全尺寸图像存储在MainWindow类的成员中,例如...

QPixmap m_original_pixmap;

然后在您的resizeEvent成员中使用该版本的缩放版本...

void MainWindow::resizeEvent(QResizeEvent *)
{
  QPixmap pix = m_original_pixmap.scaled(ui->labelImage->size(), Qt::KeepAspectRatio);
  ui->labelImage->setPixmap(pix);
}

不确定是否可以清除所有内容,但是应该采取某种方法来删除一些工件。

附带说明一下,如果您担心图像质量,可以考虑在缩放操作中将Qt :: SmoothTransformation指定为像素图转换模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM