[SDL2] get color pixel

Signaler
Messages postés
2
Date d'inscription
vendredi 12 décembre 2014
Statut
Membre
Dernière intervention
13 décembre 2014
-
Messages postés
377
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
10 septembre 2020
-
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é?

3 réponses

Messages postés
377
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
10 septembre 2020
2
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.
Messages postés
2
Date d'inscription
vendredi 12 décembre 2014
Statut
Membre
Dernière intervention
13 décembre 2014

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)
Messages postés
377
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
10 septembre 2020
2
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.