2013-07-04 17 views
11

Teraz, gdy QPixmap :: toWinHBITMAP() został wycofany, nie mogę znaleźć sposobu na uzyskanie HBITMAP z QPixmap (lub QImage).Uzyskiwanie HBITMAP z QPixmap w QT5 (Windows)

Googling, znalazłem tam jest funkcja o nazwie qt_pixmapToWinHBITMAP(), które wydaje się, że to, co muszę, ale nie mogę znaleźć tego modułu należy włączyć -Jeśli any- w moim .pro pliku lub co nagłówek powinien zawierać się użyj go, a może czegoś innego.

Powodem, dla którego potrzebuję HBITMAP jest utworzenie filmu wideo przy użyciu VFW. Oczywiście, chciałbym móc to zrobić, używając tylko Qt. Jest moduł QtMultimedia, ale, o ile wiem, nie eksportuje wideo, więc domyślam się, że utknąłem w bezpośrednim użyciu api Windows.

Każda pomoc zostanie doceniona.

+0

Witam, czy znalazłeś jakąś alternatywę? Właśnie zaktualizowałem Qt5 i mam ten sam problem z połączeniami "fromWinHICON" i "fromWinHBITMAP". – Dalamber

Odpowiedz

10

Znalazłem!

Wszystko, co potrzebne było QtWinExtras

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

Mój kod wygląda teraz tak:

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

ja nie wiem, czy muszę to wszystkie te nagłówki, ale działa dla mnie.

4

QtWinExtras nie jest konieczne. Wystarczy użyć qt_pixmapToWinHBITMAP(), jak robi to QtWinExtras.

uznaniu jej wkrótce po dokonaniu obejmuje:

i tylko z niego korzystać. Na przykład, jeśli chcesz go odzyskać z zasobów QRC:

QPixmap pixmap(":/image.bmp"); 
HBITMAP hBitmap = qt_pixmapToWinHBITMAP(pixmap);