Parser un DC/DIB

Signaler
Messages postés
137
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
30 septembre 2004
-
Messages postés
137
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
30 septembre 2004
-
Salut a tous,

voila je voudrais recuperer une capture d'ecran (ca j'ai reussi).
Ensuite je voudrais l'afficher sur le fond de ma fenetre, mais pas d'un coups, mais pixel par pixel.

Voila mon code, il m'affiche que du noir :

void Capture_Screen(HDC hdest)
{
HDC hDC;
SIZE size;
BITMAPINFO myBIT;
HBITMAP myBitmap;
UINT *pixel;
int x;
int y;

hDC = GetDC(NULL);
size.cx = GetSystemMetrics(SM_CXSCREEN);
size.cy = GetSystemMetrics(SM_CYSCREEN);
memset(&myBIT,0,sizeof(myBIT));
myBIT.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
myBIT.bmiHeader.biWidth=size.cx;
myBIT.bmiHeader.biHeight=size.cy;
myBIT.bmiHeader.biPlanes=1;
myBIT.bmiHeader.biBitCount=8;
myBitmap = CreateDIBSection(hDC, &myBIT, DIB_PAL_COLORS, (void **)&pixel, NULL, 0);
if (myBitmap)
{
for (y = 1; y < size.cy; y++)
for (x = 1; x < size.cx; x++)
SetPixel(hdest, x, y, COLORREF2RGB(pixel[x*y]));
}
else
MessageBox(NULL, "Can't create DIB Section", "error", MB_OK);
DeleteObject(myBitmap);
DeleteDC(hDC);
ReleaseDC(NULL, hDC);
}

Si quelqu'un a une idee .... d'avance merci.

Arno

4 réponses

Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

Si tu utilises DIB_PAL_COLORS pourquoi tu utilises du RGB après ?

Tu as essayé en mettant DIB_RGB_COLORS ?
Messages postés
137
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
30 septembre 2004

en fait j'ai reussi a chopper les pixels en fesant directement un GetPixel sur le hdc.
Mais maintenant je voudrais ecrire ces pixels dans un DC differents, j'ai donc fait un :

HDC hdc_buff;

hdc_buff = CreateCompatibleDC(NULL);
et des SetPixel(hdc_buff, x, y, COULEUR);

Ensuite pour afficher :

BitBlt(hdc_main, 0, 0, size.cx, size.cy, hdc_buff, 0, 0, SRCCOPY);

mais voila rien, rien ne s'affiche dans ce DC.

Quelqu'un a une idee ?

Arno
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

J'mexcuse de demander pardon...mais là je ne te suis plus!
Je croyais que tu ne voulais pas utiliser SRCCOPY mais faire une copie pixel par pixel...
Si c'est pour faire du BitBlt tu n'as pas besoin de t'embêter avec un buffer!!!
Messages postés
137
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
30 septembre 2004

Salut,

nan en fait, mon but etait d'arriver a chopper les pixels de n'importe kel moyen pour travailler dessus et les injecter dans un nouveau buffer. Traitement d'image un peu basique ...

voila, j'espere que maintenant tu comprend mieux.

Rno