Q来自 HBITMAP 的图片

问题描述 投票:0回答:4

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

HBITMAP

有没有办法从其内容初始化

QImage
,即将其转换为
QImage

c++ qt qimage qtgui hbitmap
4个回答
11
投票

这是 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)

3
投票

好吧,这似乎对我有用:

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

1
投票

Qt5(无附加功能): 放在你的代码之前

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

例如在你的函数中

QPixmap pixmap = qt_pixmapFromWinHBITMAP(LoadBitmap(uiID));

干杯


0
投票

从 Qt 6.0 开始,您可以使用 static QImage::fromHBITMAP(HBITMAP hbitmap):

返回相当于给定 hbitmap 的 QImage

HBITMAP 不存储有关 Alpha 通道的信息。

在标准情况下,Alpha 通道被忽略,并创建完全不透明的图像(通常为 >format QImage::Format_RGB32)。

不过,在某些情况下会使用 Alpha 通道,例如应用程序图标或系统托盘图标。在这种情况下,应该在返回的图像上调用 reinterpretAsFormat(QImage::Format_ARGB32) 以确保格式正确。

该功能是在Qt 6.0中引入的。

© www.soinside.com 2019 - 2024. All rights reserved.