IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ SDL

FAQ SDLConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013 

 
OuvrirSommaireLe curseur de souris

Si le curseur est en noir et blanc, on peut utiliser cette fonction :

Prototype de SDL_CreateCursor
Sélectionnez
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).

Créé le 9 avril 2007  par fearyourself

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 :

Désactive la souris
Sélectionnez
        // On enlève la souris actuelle
        SDL_ShowCursor(0);

- on charge la souris comme si c'était une surface :

Charge la surface de la souris
Sélectionnez
        // Pour la souris
        SDL_Surface *mouse = SDL_LoadBMP("cursor.bmp");

- avant la fin du code de rendu, on ajoute :

Récupération de la position et rendu
Sélectionnez
        int x,y;
        // On recupère la position de la souris
        SDL_GetMouseState(&x,&y);

        //On met à jour la structure rect
        rect.x = x;
        rect.y = y;

        //On met notre image de souris
        SDL_BlitSurface(mouse,NULL,ecran,&rect);

Un exemple complet peut être trouvé sur ici.

Créé le 9 avril 2007  par fearyourself

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.