afficher une image à parti d'un HDC

afficher une image à parti d'un HDC - C++ - Programmation

Marsh Posté le 11-03-2004 à 09:27:13    

J'ai une fonction (pour l'affichage d'image) qui recoit ces paramètres :

Code :
  1. bool MaFonction(BITMAPINFO *pbi,DWORD dwImageType,void *pData)


 
je créé une instance de HDC initialisé avec la boîte de dialogue :
 

Code :
  1. HDC dc(this);


 
puis je ne sais pas comment faire pour utilisé les paramètres recut par la fonction MaFonction afin d'afficher l'image passer en paramètre :

Code :
  1. BITMAPINFO *pbi     //BITMAPINFO pointeur  
  2. DWORD dwImageType   //type d'image
  3. void *pData         //image data bits

Reply

Marsh Posté le 11-03-2004 à 09:27:13   

Reply

Marsh Posté le 11-03-2004 à 09:31:47    

Un bon gros BitBlt devrait solutionner votre problème.

Reply

Marsh Posté le 11-03-2004 à 09:38:28    

jusqu'à présent, j'utilisé la fonction StretchBlt(), seulement, je ne vois pas où place t-on en paramètre (à cette fonction) les données qu'on a passé en référence à la fonction MaFonction :

Code :
  1. HDC dc(this);
  2. HBITMAP bit;
  3. BITMAP bitmap;
  4. bit= (HBITMAP)
  5.  LoadImage( ??? , ??? , IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
  6. HDC bit_dc= CreateCompatibleDC(dc);
  7. SelectObject(bit_dc,bit);
  8. GetObject(bit,sizeof(BITMAP),&bitmap);
  9. int LS = bitmap.bmWidth;
  10. int HS = bitmap.bmHeight;
  11. StretchBlt(dc,0,0,500,390,bit_dc,0,0,LS,HS,SRCCOPY);

Reply

Marsh Posté le 11-03-2004 à 09:53:16    

Bon, je vous ai dit une connerie. C'est la fonction SetDIBitsToDevice qu'il faut utiliser.

Reply

Marsh Posté le 11-03-2004 à 09:56:27    

ha ok, je vais essayé ;)

Reply

Marsh Posté le 11-03-2004 à 10:06:31    

ce serait possible de voir un exemple d'utilisation de cette fonction ?
parcequ'il y a des paramètres que je ne comprend pas comme :

Code :
  1. bool CMainFrame::OnAfficheSingleImage(BITMAPINFO *pbi,DWORD dwImageType,void *pData)
  2. {
  3. CPaintDC dc(this);
  4. HDC hdc= CreateCompatibleDC(dc);
  5. SetDIBitsToDevice(hdc,0,0,dwImageType????,dwImageType????,800/*par exemple*/,600,???,???,pData,pbi,???);
  6.         ReleaseDC(hdc);


 

Code :
  1. int SetDIBitsToDevice(
  2.   HDC hdc,              // handle to device context
  3.   int XDest,            // x-coordinate of upper-left corner of  
  4.                         // dest. rect.
  5.   int YDest,            // y-coordinate of upper-left corner of  
  6.                         // dest. rect.
  7. //qu'un seul DWORD ne m'est passé en paramètre...
  8.   DWORD dwWidth,        // source rectangle width
  9.   DWORD dwHeight,       // source rectangle height
  10. //comment faire pour connaitre width et height ?
  11.   int XSrc,             // x-coordinate of lower-left corner of  
  12.                         // source rect.
  13.   int YSrc,             // y-coordinate of lower-left corner of  
  14.                         // source rect.
  15.   UINT uStartScan,      // first scan line in array
  16.   UINT cScanLines,      // number of scan lines
  17.   CONST VOID *lpvBits,  // address of array with DIB bits
  18.   CONST BITMAPINFO *lpbmi,  // address of structure with bitmap info.
  19.   UINT fuColorUse       // RGB or palette indexes
  20. );


 
en fait je cherche à afficher une image bitmap dans une SDI...

Reply

Marsh Posté le 11-03-2004 à 10:11:05    

Oui, c'est possible. Il vous suffit de trouver le sample de krosoft nommé diblook.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed