begin process at 2012 05 30 11:04:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Multimédia

 > 

Qt, QPixmap, VMR9 et Overlay Video


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Qt, QPixmap, VMR9 et Overlay Video

mercredi 1 décembre 2004 à 11:10:12 | Qt, QPixmap, VMR9 et Overlay Video

fenrhyr

Bonjour

J'utilise Qt3, windowsXP et j'essaie de mettre un QPixmap en overlay sur une live video.

J'ai la video, je peux faire un overlay d'un bitmap avec la fonction LoadImage() mais je ne peux pas le faire avec un Qpixmap que je passe en bitmap, il faut pourtant que je le fasse ainsi puisque je travaille sur le qpixmap avant de l'afficher

Du code vaut peut-etre mieux qu'une longue histoire


BOOL QVMRWidget::SetBitmap(/*HDC hdc,*/ int nAlpha, COLORREF cTransColor, RECT
bitmapRect)
{

LONG cx, cy;
HRESULT hr;
hr = m_pVMRWindowlessControl->GetNativeVideoSize(&cx, &cy, NULL, NULL);
if (FAILED(hr))
{
ReportError("GetNativeVideoSize FAILED! Bitmap operations will fail",
hr);
return FALSE;
}
QPixmap :: setDefaultOptimization(QPixmap :: DefaultOptim);
QPixmap pm("InterfaceBackground1.bmp");


HBITMAP hbm = (HBITMAP)pm.hbm();
//HBITMAP hbm = (HBITMAP)LoadImage(NULL, L"InterfaceBackground1.bmp",
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); //This is working
well !

qDebug("hbm = %x", hbm);


HDC hdc = GetDC(m_hMediaWindow);
if (hdc == NULL)
{
return E_FAIL;
}

HDC hdcBmp = CreateCompatibleDC(hdc);
ReleaseDC(m_hMediaWindow, hdc);

if (hdcBmp == NULL)
{
qDebug("hdcBmp == NULL");
return E_FAIL;
}

BITMAP bm;
if (0 == GetObject(hbm, sizeof(bm), &bm))//(hNewBitmap, sizeof(bm), &bm))
{
qDebug("GetObject is NULL");
DeleteDC(hdcBmp);
return E_FAIL;
}

HBITMAP hbmOld = (HBITMAP)SelectObject(hdcBmp,hbm);

if (hbmOld == 0)
{
DeleteDC(hdcBmp);
qDebug("hbmOld FAILED");
return E_FAIL;
}

VMR9NormalizedRect nRect = NormalizeRect(&bitmapRect);
VMR9AlphaBitmap bmpInfo;
ZeroMemory(&bmpInfo, sizeof(bmpInfo) );
bmpInfo.dwFlags = VMR9AlphaBitmap_hDC | VMR9AlphaBitmap_SrcColorKey;
bmpInfo.hdc = hdcBmp;

// Show the entire bitmap in the top-left corner of the video image.
SetRect(&bmpInfo.rSrc, 0, 0, 300, 300); //bm.bmWidth, bm.bmHeight);

bmpInfo.rDest.top = nRect.top;
bmpInfo.rDest.left = nRect.left;
bmpInfo.rDest.bottom = nRect.bottom;
bmpInfo.rDest.right = nRect.right;

// Set the transparency value (1.0 is opaque, 0.0 is transparent).
bmpInfo.fAlpha = nAlpha / 100.0f;

// set colorkey value
bmpInfo.clrSrcKey = cTransColor;

hr = m_pVMRMixerBitmap->SetAlphaBitmap(&bmpInfo);
if (FAILED(hr))
ReportError("SetAlphaBitmap FAILED! Bitmap operations will fail",
hr);

DeleteObject(SelectObject(hdcBmp, hbmOld));
DeleteDC(hdcBmp);

return TRUE;


}


La debug window me sort:
hbm = 13050eee
hbmOld FAILED

Pourquoi la fonction SelectObject() echoue a l'appel avec hbm = pm.hbm() et non avec hbm = LoadImage() ??? Que puis-je faire ??

Please, help...



mercredi 1 décembre 2004 à 15:08:19 | Re : Qt, QPixmap, VMR9 et Overlay Video

fenrhyr

Juste pour dire que c'est une fois le message poste que l'on trouve la solution ^^

Pour ceux que ca interesse, il convient de faire :


HDC hBmpDC1 = CreateCompatibleDC(hdc);
HBITMAP hNewBitmap = CreateCompatibleBitmap(hdc, pm.width(), pm.height());
HBITMAP hOldBmpDC1 = (HBITMAP) SelectObject(hBmpDC1, hNewBitmap);
if (hOldBmpDC1 == 0)
{
DeleteDC(hBmpDC1);
qDebug("hOldBmpDC1 FAILED");
return E_FAIL;
}


StretchBlt(hBmpDC1, 0, 0, pm.width(), pm.height(), pm.handle()/*hBmpDC2*/, 0, 0,pm.width(), pm.height(), SRCCOPY);


Cette discussion est classée dans : hdc, bmpinfo, hbm, hdcbmp, qpixmap


Répondre à ce message

Sujets en rapport avec ce message

Une sorte de capture d'image... [ par tsc ] Bonjour,Voilà j'ai un petit problème avec une source qui permet de capturer l'image de sawebcam. source = http://www.cppfrance.com/code.aspx?ID=24541M HBTMAP de l'écran [ par clem0338 ] Bonjour, J'essaie de récupérer un Handle du bitmap de l'écran HDC hDC = GetDC( 0 ); // DC de l'écran HBITMAP hBm; GetObject( hDC, sizeof( hBm ), &h Dessiner un Rectangle [ par SnOOpss ] bonjour tout le monde, vla le probleme :HBITMAP hbmp = (HBITMAP)LoadImage(0,"c:\\logo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);HDC hdc;hdc = GetWindowDC bitmap pixel par pixel [ par Galmiza ] Salut,J'ai besoin d'afficher des images bitmaps pixel par pixel et non via le BitBlt.J'aimerais pouvoir acceder à ce qu'on appelerait la memoire video Impression formatée [ par goutbouyo ] Salut,Je viens de réussir à imprimer uen edit box(grace aux sources de ce site), mais le problème c'est que tous les mots s'affichent à la suite ...J' Region complexe fenetre [ par AlexMAN ] Bonsoir, Voila mon pb : jmré que ma fenetre soit en fait une region complexe (comme la source de JCDjcd "Horloge win32"), mais je n'y arrive pas. Voic Problème MP3 en ressources, fentre blanche et texte [ par sauron71 ] Bonjour,Je programme en C avec Dev-CPP sur API WIN32 depuis quelques jours et je rencontre quelques problèmes.J'utilise un fichier MP3 qui est inclus [api]Plusieurs images dans un dcMem, ou plusieurs dcMem [ par hoGan ] Bonjour à tous,j'aimerais pouvoir afficher plusieurs images l'une à la suite de l'autre en cliquant plusieurs fois sur un bouton. Voici la façon dont [API] [ par shadow1779 ] j'ai un petit probleme sur la fonction pour imprimer du texte, celui ci est bien imprimé mais le dernier caractere ne l'est pas et si il y a la touche De l'openGL sur le bureau [ par Alcantornet ] Hello le peuple, J'ai fait une petite horloge en openGL et j'aimerais pouvoir la mettre à la place de l'arrière plan. Je pense qu'il faut que je lie


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales