Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: gaulois94 le Mai 06, 2013, 06:38:28 pm

Titre: Revenir à l'ancienne gestion du resize
Posté par: gaulois94 le Mai 06, 2013, 06:38:28 pm
Bonjours,

alors voila j'ai mis à jours sfml 2.0 et là j'ai été surpris par une petite chose assez contraignante à mon goût : quand on resize la fenêtre, les Drawables ne sont plus agrandis (zoom) comme avant (ce que je souhaite) mais on simplement garder leur ancienne places sur la fenêtre qui elle grandit réellement.

Ce que je souhaite est simple : revenir à l'ancienne gestion du resize où tout était zoomer. Comment faire ? Merci d'avance :) .
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Laurent le Mai 06, 2013, 07:01:34 pm
Tu as dû foirer quelque chose, parce que ça n'a pas changé. Ce que tu dessines est toujours étiré aux nouvelles dimensions de la fenêtre, puisque la vue ne bouge pas par défaut. C'est ce qui est expliqué dans le tutoriel, et qui aurait dû te faire remarquer qu'il y avait un problème ;)
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: gaulois94 le Mai 06, 2013, 07:38:48 pm
Ben chez moi la vu est agrandi en même temps que la fenêtre : tout as bougé mais rien n'a été rediménsionner. Voici un code simple et les deux screens :

#include <SFML/Graphics.hpp>

int main()
{
        sf::Font font;
        font.loadFromFile("DejaVuSansMono.ttf");
        sf::RenderWindow window(sf::VideoMode(800,600,32), "coucou");
        sf::Text label("coucou", font);

        while(window.isOpen())
        {
                window.clear();
                window.draw(label);
                window.display();
        }
}

et les screens :  Sans resize http://imageshack.us/a/img593/8546/201305061903221600x900s.png (http://imageshack.us/a/img593/8546/201305061903221600x900s.png)
Avec resize : http://imageshack.us/a/img824/8647/201305061903291600x900s.png (http://imageshack.us/a/img824/8647/201305061903291600x900s.png)
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Laurent le Mai 06, 2013, 08:17:53 pm
Et avec une boucle d'évènements, ça marche mieux ?
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: gaulois94 le Mai 06, 2013, 08:33:06 pm
Ah oui ça fonctionne mieux x)
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Lolilolight le Mai 07, 2013, 12:59:05 pm
Moi j'ai aussi ce problème mais avec les sprites : quand je fais un scale sur un sprite, le sprite ne s'affiche plus au même endroit.
Donc le centre du sprite n'a pas changé, faut il le remettre à jour soi même quand on redimentionne un sprite.
Par exemple si ma tile fait 100*50 je fais un setOrigin(50, 25), si je fais ensuite un scale et sa nouvelle taille est de 120*60, doit je refaire moi même le setOrigin(60, 30)  pour remettre à jour son nouveau centre ?
Car avec la SFML 1.6 je n'avais pas besoin de le faire.
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Laurent le Mai 07, 2013, 01:10:22 pm
Non, l'origine est donnée en coordonnées locales, donc sa définition n'est pas affectée par les diverses transformations que tu fais subir à ton sprite.

Qu'est-ce que tu entends par "le sprite ne s'affiche plus au même endroit" ? Le redimensionnement se fait autour de l'origine, donc si celle-ci se trouve au centre, il est normal que le sprite s'étire dans toutes les directions. Mais son origine, elle, reste au même endroit.
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Lolilolight le Mai 07, 2013, 03:34:26 pm
Bah, quand je le redimentionne, le sprite ne s'étire pas à partir de son centre mais il s'étire vers le coin supérieur gauche.
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Laurent le Mai 07, 2013, 03:53:30 pm
Dans ce cas ce n'est pas normal. Si tu me postes un code complet minimal (comme celui de gaulois94 ci-dessus) qui reproduit le problème, je pourrais voir ce qui ne va pas.
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Lolilolight le Mai 09, 2013, 03:11:56 pm
Ok je vais essayer ça. ;)
Titre: Re : Revenir à l'ancienne gestion du resize
Posté par: Lolilolight le Mai 12, 2013, 11:37:27 am
Oublie ce que j'ai dit, j'ai fais le setScale avant le setOrigin du coup ça le faisais pas à partir du centre, vu que l'origine par défaut c'est 0,0.