Partage
  • Partager sur Facebook
  • Partager sur Twitter

dessiner des rectangles

je n'arrive à en faire qu'un seul !

Sujet résolu
    8 août 2006 à 2:12:46

    je me suis bricolé une petite fonction d'affichage de rectangle que voici
    le code n'est pas entierement de moi, le bricolage, si

    void dessineRectangle(SDL_Surface* screen, int longueur, int largeur,int origineX, int origineY, Uint32 couleur)
    {
        SDL_Rect Src,Dest;
        SDL_Surface * lh;
        int i,j;
        Dest.x=0;
        Dest.y=0;
        Dest.w=640;
        Dest.h=480;
        SDL_FillRect(screen,&Dest,0);
        lh=SDL_CreateRGBSurface(SDL_HWSURFACE|SDL_DOUBLEBUF,
                longueur, largeur,
                screen->format->BitsPerPixel,
                screen->format->Rmask,
                screen->format->Gmask,
                screen->format->Bmask,
                screen->format->Amask);
        Src.x=0;
        Src.y=0;
        Src.w=longueur;
        Src.h=largeur;
        SDL_FillRect(lh,&Src,couleur);

            Dest.x=origineX;
            Dest.y=origineY;
            SDL_BlitSurface(lh,&Src,screen,&Dest);

        SDL_FreeSurface(lh);
    }


    cette fonction marche bien, à la base, mais pas exactement comme je veux

    lorsque j'arrive dans ma fonction d'affichage, j'ai le probleme suivant:
    je ne peux me servir qu'une fois de cette fonction

    lorsque je fais

    dessineRectangle(ecran, 200, 1, 175, 15, 0x00FF00);
    dessineRectangle(ecran,3,10,175+ratio,10,0x0000FF);

    ou

    dessineRectangle(ecran,3,10,175+ratio,10,0x0000FF);
    dessineRectangle(ecran, 200, 1, 175, 15, 0x00FF00);


    seule la derniere ligne a un effet visible, l'autre ayant visiblement été remplacée par la suivante
    comment faire pour pouvoir dessiner deux rectangles sur la meme fenetre?

    d'avance, merci

    cordialement,
    Nigel
    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2006 à 6:11:22

      Je pense que la variable lh ne doit pas être déclarée dans ta fonction mais que tu doit lui donner comme argument.
      • Partager sur Facebook
      • Partager sur Twitter
        8 août 2006 à 12:52:57

        j'ai trouvé (on me l'a donné :-° )
        quand je fais
        SDL_FillRect(screen,&Dest,0);

        vers le debut de la fonction, c'est pas forcement clair mais je suis en train d'effacer l'ecran
        si je l'utilise deux fois, au deuxieme appel cette ligne efface forcement ce qu'aurait pu faire la precedente
        il faut donc que j'efface l'ecran a un autre endroit dans mon code, mais hors de la fonction (mais ça y etait déjà)
        • Partager sur Facebook
        • Partager sur Twitter

        dessiner des rectangles

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown