Lire le buffer de pixels a partir d'un HBITMAP

Résolu
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016 - 1 avril 2005 à 19:18
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 1 avril 2005 à 20:12
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

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

J'etais en train de regarder cette source ;)

+2(p - n)
3
Rejoignez-nous