begin process at 2012 05 28 20:19:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Demande d'explications pour GetDIBits...


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

Demande d'explications pour GetDIBits...

jeudi 27 mai 2004 à 16:46:52 | Demande d'explications pour GetDIBits...

DJBACON_17

Est-ce quelqu'un pourrait m'expliquer comment , sous VC++6, je peux recuperer bits a bit le contenu du buffer que GetDIBits remplit svp?
Merci d'avance.

jeudi 27 mai 2004 à 22:30:22 | Re : Demande d'explications pour GetDIBits...

ymca2003

voici comment récupérer les pixels du bitmap (on le récupère en 32 bits/pixel pour faire simple)


//************************************************// TestGetDIBits :
//
//************************************************
#include <windows.h>

#include "Resource.h"

//************************************************// WinMain :
//************************************************int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
// chargement bitmap
HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SPRITE));

// tout d'abord on récupère des informations sur la taille du bitmap
BITMAP bmpInfo;
GetObject(hBitmap, sizeof(BITMAP), &bmpInfo);

// allocation mémoire. On va récupérer le bitmap en 32 bits/pixel pour simplifier
// comme cela, on sera sur que chaque ligne du bitmap sera codé sur un nombre
// d'octets multiple de 4. Si le bitmap n'est pas bottom-up (cas le plus fréquent)
// mais top-down, bmpInfo.bmHeight est négatif.
LPBYTE lpBits = new BYTE[4*bmpInfo.bmWidth*bmpInfo.bmHeight];

// initialisation structure BITMAPINFO
BITMAPINFO bi;
memset(&bi, 0, sizeof(BITMAPINFO));
bi.bmiHeader.biSize= sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biWidth= bmpInfo.bmWidth;
bi.bmiHeader.biHeight= bmpInfo.bmHeight;
bi.bmiHeader.biBitCount= 32;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biCompression= BI_RGB;

// récupération pixels
HDC hdc = GetDC(NULL);
GetDIBits(hdc, hBitmap, 0, bmpInfo.bmHeight, lpBits, &bi, DIB_RGB_COLORS);
ReleaseDC(NULL, hdc);

// création d'un fichier
char szFileName[MAX_PATH];
GetModuleFileName(NULL, szFileName, MAX_PATH);
char* pEnd = strrchr(szFileName, '\\');
strcpy(pEnd, "\\Dump.txt");
HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);

// écriture des pixels à partir du haut du bitmap
char szColor[16];
DWORD dwNbBytesWritten;
for(int y = 0; y < bmpInfo.bmHeight; y++)
{
LPBYTE lpLine = lpBits+(bmpInfo.bmHeight-y-1)*4*bmpInfo.bmWidth;
for(int x = 0; x < bmpInfo.bmWidth; x++)
{
COLORREF color = *((COLORREF*)(lpLine+4*x));
wsprintf(szColor, "%08X ", color);
WriteFile(hFile, szColor, strlen(szColor), &dwNbBytesWritten, NULL);
}
WriteFile(hFile, "\r\n", 2, &dwNbBytesWritten, NULL);
}

// fermeture fichier, libération mémoire
CloseHandle(hFile);
delete[] lpBits;
return 0;
}


vendredi 28 mai 2004 à 08:36:43 | Re : Demande d'explications pour GetDIBits...

DJBACON_17


Merci ymca2003 pour ton aide.


Cette discussion est classée dans : demande, getdibits, explications


Répondre à ce message

Sujets en rapport avec ce message

Demande de tutorial et de code source... [ par MaTHieU ] Salut,Tout d'abord, merci pour ce superbe site !Je cherche des cours pour apprendre à faire des tunnel et du plasma en Visual C++ ou des codes sources Demande d'une nouvelle rubrique [ par ndj55 ] voilà,à moins que cela ne rentre dans la categorie 'graphisme' ou 'multimedia',la creation d'une rubrique OpenGL me semble etre une bonne idée,directX Hors programmation... [ par NitRic ] Seulement une petite suggestion: Il serait bien d'indiquer dans les message(demande d'aide) quel compilateur on utilise... Pourquoi je dit ca:Allez vo Demande source en C conversion IEEE754 AU SECOUR!!!!!! [ par Benny54 ] Si vous avez quoi que ce soit sur la conversion IEEE754 en langage C envoyez le moi je suis au bord du GOUFFRE!!!!! [visual c++] Demande d'infos : CDialogue [ par karl ] Qlq un pourrais me donner un tutorial sur visual c++ 6comportant 2 dialogues avec passage de parametres.J'ai cherché sur internet mais rienC'est pour demande librairie gtk pour win32 [ par francky ] quelqu'un pourrait-il me donner la librairie gtk.h?ou alors des liens vers des exemples d'interface graphique réaliséemerci d'avance. Demande de moderation du forum [ par Jo ] Salut a tous,Premierement je m'excuse d'encore utiliser le forum pour poster ce genre de message.Ce post pour dire qu'il serait preferable de modere l Demande d'un caractère [ par JosueClement ] je déclare une variable de type char. Et je désire que lorsque l'utilisateur tape une lettre il n'ai pas besoin de taper sur ENTER après ( comme avec AU VOLEUR !! PHP-KODE ! [ par Xs ] y'a quelu'un qui me doit de explications ici....on m'a piqué ma source est déposé sur www.php-kode.fr.st et en plus il ne s'est pas donné de mal : il port // : demande d'aide merci bcp [ par kilian ] bonjouren fait je souhaiterais faire un soft en C++ ( mais je n'y comprends rien en C++ ) ( je suis plus que débutant :( )mon projet c'est de commande


Nos sponsors


Sondage...

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,733 sec (3)

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