Lire le buffer de pixels a partir d'un HBITMAP [Résolu]

Signaler
Messages postés
306
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
15 février 2016
-
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Bonjour,
j'ai un probleme pour passer un Bitmap en 32bpp,
je charge le fichier en memoire (HBITMAP) et ensuite je tente de le modifier, mais le probleme est que je ne sais pas comment lire le buffer de pixels qui lui est associé, voila le code que j'ai fait, il se compile mais ça donne un truc tres moche (pas du tout le résultat desiré)

HBITMAP Create32bppBitmap(HBITMAP hbmp)
{
HDC hdc;
HBITMAP hpic;
BITMAPINFO bmi,tbm;
ULONG bHeight,bWidth,x,y;
VOID *pvBits;

hdc = CreateCompatibleDC(dcPicture);
GetObject(hbmp,sizeof(BITMAPINFO),&tbm);


ZeroMemory(&bmi,sizeof(BITMAPINFO));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth bWidth tbm.bmiHeader.biWidth; bmi.bmiHeader.biHeight bHeight tbm.bmiHeader.biHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = bWidth * bHeight * 4;


hpic = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, &pvBits, NULL, 0);
for (y = 0; y < bHeight; y++)
{
for (x = 0; x < bWidth; x++)
{
((UINT32 *)pvBits)[x + y * bWidth] = MAKELONG(MAKEWORD(255,bmi.bmiColors[x + y * bWidth].rgbRed),MAKEWORD(bmi.bmiColors[x + y * bWidth].rgbGreen,bmi.bmiColors[x + y * bWidth].rgbBlue));
}
}
return hpic;
//http://www.nomorepasting.com/paste.php?pasteID=36273
}

Merci

K@zuya

1 réponse

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
http://www.cppfrance.com/code.aspx?id=23921

J'etais en train de regarder cette source ;)

+2(p - n)