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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Mettre une fenêtre en paramètre


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut Mettre une fenêtre en paramètre
    Bonjour,
    J'utilise DevC++ pour programmer en C++ et j'ai déjà fais quelques recherches mais cela n'a pas abouti.
    En fait ce que je désire réaliser est la chose suivante : je désire pouvoir analyser ce qui apparaît sur une fenêtre. Je m'explique : si à la position de coordonnées x=124 et y=72 de ce que je vois sur la fenêtre il y a un pixel de telle couleur alors je veux exécuter une certaine action. Cependant je ne sais si cela est réalisable et si oui par quel moyen ??!?
    J'espère que j'ai été assez clair quant à ma question, n'hésitez pas à me demander des précisions.
    Merci d'avance
    Quentin

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Désolé de faire un déterrage, mais mieux vaut tard que jamais ^^

    Je comprend pas tout a fais ce que tu veux faire mais voici la fonction qui permet de récupérer la couleur d'un pixel aux coordonnée indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /*
     * Return the pixel value at (x, y)
     * NOTE: The surface must be locked before calling this!
     */
    Uint32 getpixel(SDL_Surface *surface, int x, int y)
    {
        int bpp = surface->format->BytesPerPixel;
        /* Here p is the address to the pixel we want to retrieve */
        Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
     
        switch(bpp) {
        case 1:
            return *p;
     
        case 2:
            return *(Uint16 *)p;
     
        case 3:
            if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
                return p[0] << 16 | p[1] << 8 | p[2];
            else
                return p[0] | p[1] << 8 | p[2] << 16;
     
        case 4:
            return *(Uint32 *)p;
     
        default:
            return 0;       /* shouldn't happen, but avoids warnings */
        }
    }

    Cela te retourne une valeur. Ensuite, tu n'as plus qu'a utiliser un switch case pour exécuter l'action que tu veux en fonction de la couleur récupérer.

Discussions similaires

  1. Mettre une fenêtre en paramètre
    Par Coucougnou dans le forum C++
    Réponses: 13
    Dernier message: 19/12/2008, 11h20
  2. Comment mettre une fenêtre au premier plan?
    Par damien99 dans le forum MFC
    Réponses: 11
    Dernier message: 30/08/2006, 11h37
  3. Mettre une fenêtre au premier plan
    Par Riko dans le forum Delphi
    Réponses: 4
    Dernier message: 20/06/2006, 19h30
  4. [MFC] mettre une fenêtre en 1er plan
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 14/05/2004, 16h39
  5. [API Windows] Mettre une fenêtre à jour
    Par Zazeglu dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 22/01/2004, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo