Partage
  • Partager sur Facebook
  • Partager sur Twitter

Re : Probleme d'affichage texte

actualisation de la fenetre

    11 octobre 2006 à 22:04:01

    rebonsoir

    Voila je repost car j'ai quelques problemes :

    1. Mon texte ne s'affiche.
    2. Ma fenetre devient blanche quand je passe un programme dessus, comment dire, on dirait quelle n'est pas actualiser.


    Voici mon code :

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h> /* Ne pas oublier l'include ! */

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *texte = NULL, *fond = NULL, *imageDeFond = NULL;
        SDL_Rect positionFond;
        SDL_Rect position;
        SDL_Event event; /* La variable contenant l'évènement */
        TTF_Font *police = NULL; /* Stockera les informations de police */
        SDL_Color couleurNoire = {0, 0, 0};
        int continuer = 1; /* Notre booléen pour la boucle */
        int tempsPrecedent = 0, tempsActuel = 0;
       

        positionFond.x = 0;
        positionFond.y = 0;

        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Programme Restauration V.4.0.0", NULL);
       
       police = TTF_OpenFont("ARIAL.TTF", 65); /* Ouverture de la police au début */
       /* Ecriture du texte dans la SDL_Surface "texte" en mode Blended (optimal) */
        texte = TTF_RenderText_Blended(police, "Salut les Zér0s !", couleurNoire);
       
           /* Chargement d'une image Bitmap dans une surface */
        imageDeFond = SDL_LoadBMP("background.bmp");
        /* On blitte par-dessus l'écran */
        SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

        SDL_Flip(ecran);

         position.x = 0;
            position.y = 0;
            SDL_BlitSurface(fond, NULL, ecran, &position); /* Blit du fond */

            position.x = 60;
            position.y = 370;
            SDL_BlitSurface(texte, NULL, ecran, &position); /* Blit du texte par-dessus */
            SDL_Flip(ecran); // Quand je le supprime l'image apparait mais il manque toujours le texte
           
           
        while (continuer)
        {
            SDL_PollEvent(&event); /* On utilise PollEvent et non WaitEvent pour ne pas bloquer le programme */
            switch(event.type)
            {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch (event.key.keysym.sym)
                {
                    case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
                        continuer = 0;
                        break;
                }
                break;
            }
           

    tempsActuel = SDL_GetTicks();
    if (tempsActuel - tempsPrecedent > 30)
    {

        tempsPrecedent = tempsActuel;
    }
    else /* Si ça fait moins de 30ms depuis le dernier tour de boucle, on endort le programme le temps qu'il faut */
    {
        SDL_Delay(30 - (tempsActuel - tempsPrecedent));
    }


            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
           
        }
           



        TTF_CloseFont(police); /* Fermeture de la police avant TTF_Quit */
        TTF_Quit(); /* Arrêt de SDL_ttf (peut être avant ou après SDL_Quit, peu importe) */
        SDL_FreeSurface(texte);
        SDL_Quit();

        return EXIT_SUCCESS;
    }


    Je suis preneur de toutes propositions
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 octobre 2006 à 1:09:56

      Mon dieu, le code de bourin :p

      Un seul SDL_Flip() suffit, met le tout à la fin de la boucle principal.
      et SDL_BlitSurface() se met aussi dans la boucle principal, après le SDL_FillRect et avant le SDL_Flip().

      ça devrait mieux marcher maintenant (du moins faire moins d'erreurs).

      Rappel: Comme M@teo l'a dit dans son cours, la boucle principal se termine toujours comme ça:

      FillRect()
      BlitSurface()
      Flip()
      • Partager sur Facebook
      • Partager sur Twitter

      Re : Probleme d'affichage texte

      × 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