FAQ SDL
FAQ SDLConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013
Si le curseur est en noir et blanc, on peut utiliser cette fonction :
SDL_Cursor *
SDLCALL SDL_CreateCursor
(
Uint8 *
data, Uint8 *
mask, int
w, int
h, int
hot_x, int
hot_y);
Notez que la largeur de l'image doit être un multiple de 8.
Attention : à partir d'une certaine taille (variable selon l'environnement d'exécution), un bogue d'affichage du curseur peut survenir. Pour l'éviter, il faut gérer vous-même le curseur (voir https://jeux.developpez.com/faq/sdl/?page=curseur#curseur_perso).
Cette fonction permet de créer un curseur de souris en noir et blanc, d'une taille personnalisée. Si vous souhaitez créer un pointeur de souris en couleur, animé ou sans restriction de largeur, il faut utiliser une surface et désactiver la souris par défaut (Voir https://jeux.developpez.com/faq/sdl/?page=curseur#curseur_perso).
La solution la plus portable et celle qui donnera le meilleur résultat sont de définir une surface mouse qui contiendra l'image de la souris. Voici les morceaux de code importants pour avoir son propre curseur :
- la première chose à faire est de désactiver le curseur de base en utilisant :
// On enlève la souris actuelle
SDL_ShowCursor
(
0
);
- on charge la souris comme si c'était une surface :
// Pour la souris
SDL_Surface *
mouse =
SDL_LoadBMP
(
"
cursor.bmp
"
);
- avant la fin du code de rendu, on ajoute :
int
x,y;
// On recupère la position de la souris
SDL_GetMouseState
(&
amp;x,&
amp;y);
//On met à jour la structure rect
rect.x =
x;
rect.y =
y;
//On met notre image de souris
SDL_BlitSurface
(
mouse,NULL
,ecran,&
amp;rect);
Un exemple complet peut être trouvé sur ici.