来自 HBITMAP 的 QImage

Posted

技术标签:

【中文标题】来自 HBITMAP 的 QImage【英文标题】:QImage from HBITMAP 【发布时间】:2013-01-28 18:24:41 【问题描述】:

在我的纯 Windows 程序中,我使用第三方库,它返回 HBITMAP

有没有办法从 QImage 的内容中初始化它,即将其转换为 QImage

【问题讨论】:

【参考方案1】:

这是 Qt 4 (QtGui) 的方法:

QImage image(QPixmap::fromWinHBITMAP(hBitmap).toImage());

这是 Qt 5 (QtWinExtras) 的方法:

QPixmap pixmap = QtWin::fromHBITMAP(hBitmap);
QImage image = pixmap.toImage();

// or

QtWin::imageFromHBITMAP(hdc, hBitmap, width, height)

【讨论】:

对于 Qt 6,fromWinHBITMAP 现在是 QImage 的一部分,因此您只需调用 QImage.fromHBITMAP【参考方案2】:

好的,这似乎对我有用:

QImage image(QPixmap::fromWinHBITMAP(hBitmap).toImage());

【讨论】:

这在 Qt 4.8 之后不可用【参考方案3】:

没有附加功能的 Qt5: 放在你的代码之前

#include <QPixmap>
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat=0);

在你的函数中,例如

QPixmap pixmap = qt_pixmapFromWinHBITMAP(LoadBitmap(uiID));

干杯

【讨论】:

这不是公共 API。

以上是关于来自 HBITMAP 的 QImage的主要内容,如果未能解决你的问题,请参考以下文章

MFC如何将具有透明属性的PNG转换为HBITMAP

从 glReadPixels 创建 HBITMAP

加载 HBITMAP 并将其转换为 OpenGL 纹理

qemu HBitmap原理

我的 hdc/hbitmap 的内存泄漏在哪里?

关于HBITMAP