(Qt C++)调整像素图大小并保持像素化

(Qt C++) Resize pixmap and KEEP pixelation?

本文关键字:像素 Qt C++ 调整      更新时间:2023-10-16

在我的项目中,我有一个QLabel,我经常这样更改像素图:

ui->frameLabel->setPixmap(slot_pic[blockId[currentSlot]][damageId[currentSlot]]);

slot_pic只是一个二维映射。所以你可以这样看得更清楚:

ui->frameLabel->setPixmap(pixmap);

这张图片的尺寸是16x16,我的标签是32x32。我已经检查了scaledContent,所以当像素图发生变化时,图像的大小是原来的两倍。然而,图像现在是模糊的。我理解为什么,但我想知道是否有办法让它保持像素化。我只想有一个更大的像素化图像。(如果这有助于你理解我的意思,图片来自《我的世界》)

感谢您抽出时间:)

不要让QLabel进行缩放。相反,您可以使用QPixmap::scaled()自行进行缩放。类似这样的东西:

ui->frameLabel->setPixmap(
    pixmap.scaled(32, 32, Qt::IgnoreAspectRatio, Qt::FastTransformation));

重要的参数是最后一个参数transformMode,它告诉是否使用双线性滤波。