12

QPixmap::toWinHBITMAP() が廃止されたので、QPixmap (または QImage) から HBITMAP を取得する方法が見つかりません。

グーグルで調べたところ、qt_pixmapToWinHBITMAP() という関数があることがわかりました。これは、必要なことを実行すると思われますが、.pro ファイルで有効にする必要があるモジュールや、それを使用するために含める必要があるヘッダーが見つかりません。おそらく何か他のもの。

HBITMAP が必要な理由は、VFW を使用してビデオを作成するためです。もちろん、Qt だけでそれができるようになりたいと思っています。QtMultimedia モジュールがありますが、私が知る限り、それはビデオをエクスポートしないので、Windows API を直接使用することに固執していると思います。

どんな助けでも大歓迎です。

4

2 に答える 2

12

見つけた!

必要なのは 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);

これらすべてのヘッダーを含める必要があるかどうかはわかりませんが、うまくいきます。

于 2013-09-18T01:25:54.290 に答える
5

QtWinExtras は必要ありません。QtWinExtras と同じように、qt_pixmapToWinHBITMAP() を使用してください。

インクルードの直後に宣言します。

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);
于 2015-03-26T08:54:50.570 に答える