[SDL2] get color pixel

Messages postés
2
Date d'inscription
vendredi 12 décembre 2014
Statut
Membre
Dernière intervention
13 décembre 2014
- - Dernière réponse : Digital Penguin
Messages postés
382
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2018
- 13 déc. 2014 à 18:02
Bonjour, je me met depuis peu au language c . J'utilise la SDL2.

je charge une image de cette façon:

SDL_Rect texr;
texr.x = 0; texr.y = 0;texr.w = 800; texr.h = 600;
SDL_Texture * menuDemmarageBackground = IMG_LoadTexture(renderer, "menudemmarage.png");


et l'affiche plus loin comme ceci:

SDL_RenderCopy(renderer, menuDemmarageBackground, NULL, &texr);


Seulement je voudrais savoir comment récupéré la valeur de la couleur du pixel X=11 et Y=15 de mon image menudemmarage.png.



Y'a t'il une personne qui puisse m'aidé?
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
382
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2018
2
1
Merci
Dans tes .h de SDL, fais une recherche (Ctrl + F) avec comme mot-clé "color". Y a-t-il une correspondance intéressante?

Il y a également la possibilité d'utiliser une fonction de la libX:

void
get_pixel_color (Display *d, int x, int y, XColor *color)
{
XImage *image;
image = XGetImage (d, RootWindow (d, DefaultScreen (d)), x, y, 1, 1, AllPlanes, XYPixmap);
color->pixel = XGetPixel (image, 0, 0);
XFree (image);
XQueryColor (d, DefaultColormap(d, DefaultScreen (d)), color);
}


Elle s'utilise comme ceci:
XColor c;
get_pixel_color (display, 30, 40, &c);
printf ("%d %d %d\n", c.red, c.green, c.blue);


Étudiant en informatique,
Pingouin de l'Espace à ses heures.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Digital Penguin
Messages postés
2
Date d'inscription
vendredi 12 décembre 2014
Statut
Membre
Dernière intervention
13 décembre 2014
0
Merci
j'arrive a un truc du genre :

    SDL_Rect texr;
texr.x = 0; texr.y = 0;texr.w = 800; texr.h = 600;
SDL_Surface* imageDeFond = IMG_Load("menudemmarage.png");
SDL_Texture* MenuDemmarage_Background = SDL_CreateTextureFromSurface(renderer, imageDeFond);
SDL_FreeSurface(imageDeFond);


SDL_LockSurface(imageDeFond); // Vérouillage de la surface


// ICI ma fonction de récupération de la couleur de mon pixel X=11 et Y=15


SDL_UnlockSurface(imageDeFond); //Dévérouillage de la surface


après je sais pas dire SDL_getpixel ( ,pixelY,pixelX, en forma RGB)
Commenter la réponse de hank1000
Messages postés
382
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2018
2
0
Merci
Essaye comme ça:

XColor c;
SDL_Rect texr;
texr.x = 0; texr.y = 0;texr.w = 800; texr.h = 600;
SDL_Surface* imageDeFond = IMG_Load("menudemmarage.png");
SDL_Texture* MenuDemmarage_Background = SDL_CreateTextureFromSurface(renderer, imageDeFond);
SDL_FreeSurface(imageDeFond);


SDL_LockSurface(imageDeFond); // Vérouillage de la surface

get_pixel_color (display, 11, 15, &c);
printf ("%d %d %d\n", c.red, c.green, c.blue);


SDL_UnlockSurface(imageDeFond); //Dévérouillage de la surface


Étudiant en informatique,
Pingouin de l'Espace à ses heures.
Commenter la réponse de Digital Penguin