Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Redimentionner une fenetre en gardant le ratio y/x à 0.75 [résolu]  (Lu 3013 fois)

0 Membres et 1 Invité sur ce sujet

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
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.
« Modifié: Août 23, 2018, 10:29:28 am par Rick_Cplusplus »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
« Réponse #1 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 ?
Laurent Gomila - SFML developer

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
« Réponse #2 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 ? ::)
« Modifié: Août 07, 2018, 03:28:44 pm par Rick_Cplusplus »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
« Réponse #3 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.
Laurent Gomila - SFML developer

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Re: Redimentionner une fenetre en gardant le ratio y/x à 0.75
« Réponse #4 le: Août 07, 2018, 03:30:36 pm »
 ;D énorme !

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

Rick