Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Rick_Cplusplus le Août 07, 2018, 09:42:29 am

Titre: Redimentionner une fenetre en gardant le ratio y/x à 0.75 [résolu]
Posté par: Rick_Cplusplus le Août 07, 2018, 09:42:29 am
Bonjour la communauté,

Tout ou presque est dans le titre :
je voudrai que lorsqu’on redimensionne une fenêtre celle-ci garde le ratio 3/4.
ci-dessous l'extrait de code qui devrait selon moi faire le job (toute ressemblance avec des morceaux de tuto n'est pas fortuite ;D )...

while (ecran_Armee.isOpen()) //ecran_Armee est une window
    {
        // on traite tous les évènements de la fenêtre qui ont été générés depuis la dernière itération de la boucle
        sf::Event event;
        while (ecran_Armee.pollEvent(event))
        {

            // resize en respectant le ratio 3/4
            if (event.type == sf::Event::Resized)
            {
                    // récupération de la taille de la fenêtre
                    sf::Vector2u size = ecran_Armee.getSize();

                    float ratio(0.75);
                    size.y=(unsigned int) ratio*size.x;
                    ecran_Armee.setSize(size);
            }
        }

        // effacement de la fenêtre en noir
        ecran_Armee.clear(sf::Color::Black);

        // c'est ici qu'on dessine tout
        ecran_Armee.draw(S_ville_armee); //S_ville_armee est un sprite

        // fin de la frame courante, affichage de tout ce qu'on a dessiné
        ecran_Armee.display();
    }
 

... ca compile correct sauf que lorsque je redimensionne, y passe à 0 (comme si on avait passé size.y à 0 et non pas au 3/4 de size.x  ???
Ou ai-je bien pu pêcher dans mon raisonnement ?

Rick.
Titre: Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
Posté par: Laurent le Août 07, 2018, 02:20:23 pm
Est-ce que tu as déjà debuggé un peu ? Fait une exécution pas à pas ? Inspecter les valeurs des différentes variables ?
Titre: Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
Posté par: Rick_Cplusplus le Août 07, 2018, 03:08:27 pm
Merci Laurent,

Répondre oui à ta question m'a obligé à me rendre compte que je n'avais pas installé correctement le debugger sur ce PC... (shame) :-[

Cela dit le programme fonctionne si j'enlève (unsigned int).
mais je ne comprend pas bien ; size.x et size.y devraient être des entiers non signés et donc si je fais float * unsigned int ça devrait renvoyer un float et clasher avec size.y si je ne demande pas un résultat unsigned int

non ? ::)
Titre: Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
Posté par: Laurent le Août 07, 2018, 03:20:39 pm
Là tu convertis ratio en unsigned int, pas le résultat de la multiplication (il faudrait des parenthèses pour ça). Or 0.75 en entier ça donne 0.
Titre: Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
Posté par: Rick_Cplusplus le Août 07, 2018, 03:30:36 pm
 ;D énorme !

Bon bin sujet clos, merci Laurent du support rapide et pédagogique.

Rick