[SDL2] get color pixel

hank1000 Messages postés 2 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 13 décembre 2014 - 12 déc. 2014 à 02:12
Digital Penguin Messages postés 377 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 10 septembre 2020 - 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é?
A voir également:

3 réponses

Digital Penguin Messages postés 377 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 10 septembre 2020 2
Modifié par Digital Penguin le 12/12/2014 à 16:33
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.
1
hank1000 Messages postés 2 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 13 décembre 2014
13 déc. 2014 à 01:29
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)
0
Digital Penguin Messages postés 377 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 10 septembre 2020 2
Modifié par Digital Penguin le 13/12/2014 à 18:02
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.
0
Rejoignez-nous