2013-07-04 2 views
11

이제 QPixmap :: toWinHBITMAP()가 사용되지 않으므로 QPixmap (또는 QImage)에서 HBITMAP을 가져 오는 방법을 찾을 수 없습니다.QT5 (Windows)의 QPixmap에서 HBITMAP 얻기

인터넷 검색 중 qt_pixmapToWinHBITMAP()이라는 함수가 있는데 필요한 것을 수행 할 수있는 것으로 나타 났지만 어떤 .if 파일을 사용하도록 설정해야하는지 찾을 수 없습니다. 그것을 사용하거나 다른 것을 사용하십시오.

내가 HBITMAP을 필요로하는 이유는 VFW를 사용하여 비디오를 만드는 것입니다. 물론 Qt 만 사용하면됩니다. QtMultimedia 모듈이 있지만 비디오를 내보내지 않는다고 말할 수있는 한, Windows API를 직접 사용하는 것이 좋습니다.

도움을 주시면 감사하겠습니다.

+0

안녕하세요, 대체 방법을 찾았습니까? 나는 Qt5로 업그레이드했고 'fromWinHICON'과 'fromWinHBITMAP'호출에서 같은 문제에 직면했다. – Dalamber

답변

10

발견!

http://qt.gitorious.org/qt/qtwinextras이 가

내 코드가 지금과 같이 보인다

내가 필요한 모든 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); 

나는 모든 헤더를 포함해야하는 경우 나도 몰라,하지만 나를 위해.

4

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);