windows - QPainter::drawPixmap 在 Windows 和 Linux 上表现不同

标签 windows linux qt png transparent

我正在尝试在 QWidget 中绘制一个透明的 PNG 文件。问题是,我在 Windows 和 Linux 上得到了不同的结果。

我上传了the image , Windows screenshot , 和 Linux screenshot .很容易看出差异。

我用来测试的代码是-

class TestWidget: public QWidget {
public:
    TestWidget(const char* imagePath)
    {
        m_pixmap = QPixmap(imagePath);
        setStyleSheet("background-color: black");
    }

protected:
    virtual void paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.drawPixmap(QPoint(0,0), m_pixmap);
    }

    QPixmap m_pixmap;
};

主要功能是这样的:

TestWidget* testWidget = new TestWidget(imagePath);
testWidget->setGeometry(0, 10, 1024, 1024);
testWidget->show();

我正在使用 Qt 4.5.1/4.7.2、Windows XP 和 CentOS 5.5。

任何想法可能是什么问题?


编辑:

为了详细说明所选答案,我不得不使用 24 位格式的 QImage (QImage::Format_ARGB8565_Premultiplied)。

最佳答案

尝试使用 QImage 而不是 QPixmap。

关于windows - QPainter::drawPixmap 在 Windows 和 Linux 上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248253/

相关文章:

linux - 任何一方都可以启动连接时的安全性

linux - 使用批处理文件将文件复制到远程桌面

regex - 在 Bash 脚本中返回正则表达式匹配,而不是替换它

无法访问结构 ifreq

c++ - 如何修复 OpenGL Superbible 第 6 版书籍提供的 CMake 文件

c++ - Qt Creator,使用分支名称构建目录

c++ - 在接收函数或插槽中提取菜单操作数据

c++ - Windows 设备属性文档?

windows - x509 pfx 文件的正确证书存储

linux - 在 Linux 中捕获基于 QT 的应用程序的高质量 (300dpi) 屏幕截图