Получение HBITMAP из QPixmap в QT5 (Windows)
теперь, когда QPixmap:: toWinHBITMAP() устарел, я не могу найти способ получить HBITMAP из QPixmap (или QImage).
погуглив, я нашел там функцию qt_pixmapToWinHBITMAP (), который будет делать то, что мне нужно, но я не могу найти какой модуль надо включить -если любой - в моем .файл Pro или какой заголовок я должен использовать его, или, возможно, что-то еще.
причина, по которой мне нужен HBITMAP, - создать видео с помощью VFW. Конечно, я хотел бы иметь возможность для этого используется только Qt. Есть модуль QtMultimedia, но, насколько я могу судить, он не экспортирует видео, поэтому я думаю, что я застрял с использованием Windows api напрямую.
любая помощь будет оценили.
2 ответов
Я нашел ее!
все, что мне было нужно, это QtWinExtras
http://qt.gitorious.org/qt/qtwinextras
мой код теперь выглядит так:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <qt_windows.h>
#include <QtWinExtras/QWinFunctions>
...
QPixmap pix(QSize(w,h));
...
HBITMAP hbm = QWinExtras::toHBITMAP(pix);
...
::DeleteObject(hbm);
Я не знаю, нужно ли мне включать все эти заголовки, но это работает для меня.
QtWinExtras не требуется. Просто используйте qt_pixmapToWinHBITMAP (), как это делает QtWinExtras.
объявите его вскоре после вашего включает в себя:
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(
const QPixmap &p, int hbitmapFormat = 0);
и просто использовать его. Например, если вы хотите получить его из ресурсов QRC:
QPixmap pixmap(":/image.bmp");
HBITMAP hBitmap = qt_pixmapToWinHBITMAP(pixmap);