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

时间:2013-07-17 06:43:30

标签: c++ qt interpolation image-resizing qpixmap

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

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

slot_pic只是一张二维地图。所以你可以这样看清楚:

ui->frameLabel->setPixmap(pixmap);

图像尺寸为16x16,标签为32x32。我已经检查了scaledContents,所以当pixmap改变时,图像的大小是双倍的。但是,图像现在模糊了。我理解为什么,但我想知道是否有办法让它保持像素化。我想要一个更大的像素化图像。 (图片来自Minecraft,如果这有助于你理解我的意思)

感谢您的时间:)

1 个答案:

答案 0 :(得分:16)

不要让QLabel进行缩放。相反,请使用QPixmap::scaled()自行进行缩放。像这样:

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

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