Qt Graphics:QImage 的绘画非常像素化

Qt Graphics: the painting of a QImage is very pixelated

我正在使用 QPainter 和 QImage 绘制我的游戏面板,但像素化程度很高,我不明白为什么。

像素板:

实际使用图片:

代码:

图片部分加载中:

QImage desert_pic = QImage(":/images/graphics/pi.png");
c_mapicons.insert({type, desert_pic});  

绘画部分:

QRectF source(0.0, 0.0, 500.0, 500.0);
painter->drawImage(boundingRect(), c_mapicons.at(m_gameobject->getType()), source);  

图片为 500x500 png 文件。 我尝试过的(没有成功):

如何让我的照片像第二张截图那样流畅?

如果您愿意使用 SVG,可以使用以下方法: 在你的 .pro-File: QT += core gui svg

header

#include <QtSvg>

class Board: public QGraphicsItem{

    public:

        Board();      
       ~Board();

        QRectF boundingRect() const override;
        void paint(QPainter *painter,
             const QStyleOptionGraphicsItem *option,
             QWidget *widget = nullptr) override;

        QGraphicsSvgItem *item;


};

cpp

Board::Board(){

    item = new QGraphicsSvgItem("folder/icon.svg");
    item->setParentItem(this);
    item-> ... /// set Pos() and so on here

}

你也可以在你的QGraphicsView中设置Antialiasing,然后所有项目都会生效:QGraphicsView::setRenderHint(QPainter::Antialiasing)

我通过在绘画前调整到我的图块大小设法解决了这个问题。此处有更多详细信息:Qt resize image with best quality