Couleur de pixel d'une copie de l'ecran

espritlune Messages postés 3 Date d'inscription vendredi 12 septembre 2008 Statut Membre Dernière intervention 21 mars 2009 - 29 déc. 2008 à 15:43
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 - 29 déc. 2008 à 18:51
En cherchant sur les forum et dans les codes sources j'ai trouvé un excellent code de BruNews le chat :

http://www.cppfrance.com/codes/BMP-FILE-DEPUIS-HDC-PUR-API-WIN32_11128.aspx

Mais voila, je ne désir pas crée un fichier mais seulement avoir une copie de l'écran en mémoire et y chercher des couleurs aux coordonnée X,Y.

J'ai essayé :




void PhotoHdcEcran(HDC hdc)
{
  hdc = CreateDC("DISPLAY", 0, 0, 0);
}
 
void HdcCouleur(HDC hdc, int x, int y, unsignedchar *r, unsignedchar *g, unsignedchar *b)
{
  COLORREF Pix;
  Pix = GetPixel(hdc, x, y);
  *r = GetRValue(Pix);
  *g = GetGValue(Pix);
  *b = GetBValue(Pix);
}

C'est rapide et fonctionne... mais dans mon cas ne me convient pas. pourquoi?

Car dès que l'on demande les couleurs en x,y du hdc on obtient les couleurs au moment ou on les demande et non celle du moment ou l'on a crée le hdc.
Comment faire pour être rapide car je dois faire des recherche rapide et fréquente sur un écran fixe pris en photo à divers moments.

Merci d'avance...

3 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
29 déc. 2008 à 18:22
Bonsoir,


Il faut créer un DC mémoire (CreateCompatibleDC) et un bitmap de la taille de l'écran (CreateCompatibleBitmap), associer ce bitmap au DC mémoire (SelectObject) et copier l'écran dedans (BitBlt), ainsi tu auras bien une photo de ton écran au moment de la création du DC. N'oublie pas de libérer les ressources une fois le traitement terminé.

C'est exactement ce principe qu'on utilise pour faire du double buffering.

ed73
0
espritlune Messages postés 3 Date d'inscription vendredi 12 septembre 2008 Statut Membre Dernière intervention 21 mars 2009
29 déc. 2008 à 18:44
Merci,

Quelle fonction me permettrait de récuperer les couleurs de mon bitmap rapidement?
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
29 déc. 2008 à 18:51
La même que celle que tu as écrite sauf que le hdc passé en paramètre sera le DC mémoire contenant la photo de ton écran.

ed73
0
Rejoignez-nous