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 :

SDL2 redimensionnement fenêtre avec fond coloré


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 42
    Points : 33
    Points
    33
    Par défaut SDL2 redimensionnement fenêtre avec fond coloré
    Salut à tous.
    Nouveau venu en C, je cherche à gérer le redimensionnemet d'une fenêtre avec SDL2.
    J'explique : j'ai une fenêtre avec un fond coloré et je souhaite conserver ce fond PENDANT le redimensionnment de la fenêtre. Les exemples trouvés sur le net me disent comment redessiner le fond APRES redimensionnement.
    Actuellement, quand je "tire" sur la fenêtre en bas à droite, j'ai des bandes noires à l'intérieur de la fenêtre. Ce n'est que quand je relache le bouton de la souris que la fenêtre est redessinée. Ce n'est pas là le comportement normal d'un redimensionnement.
    Voici la partie du code qui gère ça :

    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
    while (!quit)
    {
            while (SDL_PollEvent(&event))
        	{
                switch (event.type)
        	    {
                    case SDL_QUIT:
                        quit = 1;
                        break;
     
                    case SDL_WINDOWEVENT:
                        if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
                	    {
                            int new_width = event.window.data1;
                            int new_height = event.window.data2;
                            SDL_RenderSetLogicalSize(renderer, new_width, new_height);
                        }
                        break; 
                }
            }
     
            SDL_SetRenderDrawColor(renderer, 220, 220, 220, 255);
            SDL_RenderClear(renderer);
            SDL_RenderPresent(renderer);
        }
    Comment faire pour que le fond gris "suive" le redimensionnement de la fenêtre au fur et à mesure du changement de taille ?

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 512
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 512
    Points : 20 801
    Points
    20 801
    Par défaut
    bonjour je ne pense pas que ce soit possible une fois les dimensions de la fenêtre et donc de la résolution d'écran établis
    Si vous voulez redimensionner la fenêtre de rendu il faut détruire le renderer l'allouer de nouveau et dessiner dessus.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 42
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Si vous voulez redimensionner la fenêtre de rendu il faut détruire le renderer l'allouer de nouveau et dessiner dessus.
    Bigre !

    Mais le détruire quand ? Faut-il intercepter le mouvement de la souris et faire ça dès que le curseur se déplace bouton enfoncé ? Pourquoi est-il si difficile de faire un truc pourtant aussi simple ?
    Imaginez que je place une image en fond de fenêtre. Je réduis le fenêtre puis je l'agrandis. Comment reconstituer le morceau d'image que je "révèle" au fur et à mesure que je redimensionne la fenêtre ?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 512
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 512
    Points : 20 801
    Points
    20 801
    Par défaut
    Citation Envoyé par Kinesra Voir le message
    Mais le détruire quand ? Faut-il intercepter le mouvement de la souris et faire ça dès que le curseur se déplace bouton enfoncé ? Pourquoi est-il si difficile de faire un truc pourtant aussi simple ?
    bonne question parce que sous Direct X notamment je suppose que SDL déclenche la création de ce que l'on appelle des "backbuffers" et l'accélération matérielle s'établit sur ça.
    Je pense que ça doit être pareil avec Open GL.

    Citation Envoyé par Kinesra Voir le message
    Comment reconstituer le morceau d'image que je "révèle" au fur et à mesure que je redimensionne la fenêtre ?
    il faut faire du "clipping" de l'image c.a.d. la découper en fonction de la résolution d'image et n'afficher que la zone visible.
    Ou alors faire un rétrécissement avec "Stretch"

Discussions similaires

  1. Redimensionnement Userform avec photos de fonds selon resolution
    Par Allanbzh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2017, 22h22
  2. Réponses: 2
    Dernier message: 21/01/2016, 10h26
  3. Réponses: 3
    Dernier message: 25/03/2008, 19h17
  4. Coloration syntaxique pour java avec fond noir
    Par thibal_kamehouse dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 02/05/2007, 17h58
  5. Image avec fond transparent
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 16/09/2005, 12h48

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