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

Auteur Sujet: Text Scale  (Lu 5199 fois)

0 Membres et 1 Invité sur ce sujet

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Text Scale
« le: Avril 17, 2013, 09:00:03 pm »
Salut,

j'utilise les view dans mon programme "gui" est lorsque j'utilise une vue est que je modifie le viewport le bouton garde bien ses formes mais pas le texte, comment faire pour que le sf::Text n'apparaissent pas flou ?

merci.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #1 le: Avril 17, 2013, 09:06:52 pm »
Un peu plus de précisions seraient les bienvenues. Tu modifies le viewport de quelle manière ? Tu étires quelque chose ou bien tu gardes les dimensions initiales ? Tu places ta vue à des coordonnées décimales ou bien tu gardes des coordonnées entières ? Ca veut dire quoi "ne garde pas ses formes" ? C'est flou dans quelles proportions ? Tu aurais un screenshot ?
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #2 le: Avril 17, 2013, 09:14:58 pm »
Alors,

j'inialise le viewport à la main pour l'instant, c'est à dire que j'ai touché jusqu’à que les boutons ait les mêmes dimensions.

Voici les screens :



« Modifié: Avril 17, 2013, 09:16:34 pm par cChaD »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #3 le: Avril 17, 2013, 09:35:15 pm »
Tu veux dire que tu ne calcules pas ton viewport en fonction de la position et taille de ta fenêtre interne ? Tu as trouvé des valeurs de manière empirique ?
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #4 le: Avril 17, 2013, 09:44:24 pm »
Oui c'etait pour tester, mais si je le calcule je n'aurais plus ce flou ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #5 le: Avril 17, 2013, 10:06:40 pm »
Si la taille du viewport correspond exactement à la taille de la vue, il ne devrait y avoir aucune distorsion et donc aucun flou.
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #6 le: Avril 17, 2013, 10:13:54 pm »
D'accord merci !

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #7 le: Avril 17, 2013, 10:52:04 pm »
Je comprend pas, quand je place les 2 images à coté j'ai l'impression que sans les view les boutons sont plus grand alors que sur paint il font bien 108x38...

Voici la vue
    sf::View view(sf::FloatRect(210, 73, 280, 469));
    view.setViewport(sf::FloatRect(0.2625f, 0.1216666666666667f, 0.35f, 0.7816666666666667f));

la fenetre fait 800/600.




Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #8 le: Avril 17, 2013, 11:28:52 pm »
Pourquoi pas "210 / 800", "73 / 600", etc. au lieu de ces valeurs décimales qui sortent de nulle part ? ;)
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #9 le: Avril 17, 2013, 11:49:48 pm »
    sf::View view(sf::FloatRect(210, 73, 280, 469));
    view.setViewport(sf::FloatRect((float)210/800, (float)73/600, (float)280/800, (float)469/600));

C'est pareille :/

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #10 le: Avril 18, 2013, 07:53:43 am »
Dans ce cas, écris un code complet minimal qui reproduit le problème, et je testerai ça. Par "minimal" j'entends un viewport et un sf::Text dans un main(), pas ton application originale.
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #11 le: Avril 18, 2013, 01:58:46 pm »
Voilà

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "Test lib");
    window.setFramerateLimit(60);

    // GUI
    gui::EngineManager *engine = gui::EngineManager::GetInstance();
    engine->AddScene(window);

    gui::Window *fenetre = new gui::Window("JE SUIS UNE FENETRE", 200, 50, 300, 500);

    sf::RectangleShape rect1(sf::Vector2f(108, 38));
    rect1.setPosition(sf::Vector2f(220, 75));
    sf::RectangleShape rect2(sf::Vector2f(108, 38));
    rect2.setPosition(sf::Vector2f(338, 75));
    sf::RectangleShape rect3(sf::Vector2f(108, 38));
    rect3.setPosition(sf::Vector2f(220, 120));

    sf::Font font; font.loadFromFile("Fonts/BorisBlackBloxx.ttf");
    sf::Text text1("Bouton 1", font, 15);
    text1.setColor(sf::Color::Black);
    text1.setPosition(rect1.getPosition().x + 20, rect1.getPosition().y + 7);
    sf::Text text2("Bouton 2", font, 15);
    text2.setColor(sf::Color::Black);
    text2.setPosition(rect2.getPosition().x + 20, rect2.getPosition().y + 7);
    sf::Text text3("Bouton 3", font, 15);
    text3.setColor(sf::Color::Black);
    text3.setPosition(rect3.getPosition().x + 20, rect3.getPosition().y + 7);


    // Scrolling
    sf::View view(sf::FloatRect(210, 73, 280, 469));
    view.setViewport(sf::FloatRect((float)210/800, (float)73/600, (float)280/800, (float)469/600));

    while(window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
                window.close();

            engine->HandleEvent(event);
            fenetre->Update();
        }

        window.clear(sf::Color::Black);
        window.setView(window.getDefaultView());
        fenetre->Draw();
        window.setView(view);

        window.draw(rect1);
        window.draw(rect2);
        window.draw(rect3);
        window.draw(text1);
        window.draw(text2);
        window.draw(text3);

        window.display();
    }

    engine->kill();

    return 0;
}

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #12 le: Avril 18, 2013, 02:00:37 pm »
J'avais pourtant bien précisé ce que je demandais.
Citer
Par "minimal" j'entends un viewport et un sf::Text dans un main(), pas ton application originale.
C'est pas clair ?

En plus comment veux-tu que je teste ça, le code n'est même pas complet. Je la sors de mon c** la gui::Window ? ;)
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Text Scale
« Réponse #13 le: Avril 18, 2013, 02:10:31 pm »
int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "Test lib");
    window.setFramerateLimit(60);

    sf::RectangleShape rect1(sf::Vector2f(108, 38));
    rect1.setPosition(sf::Vector2f(220, 75));
    sf::RectangleShape rect2(sf::Vector2f(108, 38));
    rect2.setPosition(sf::Vector2f(338, 75));
    sf::RectangleShape rect3(sf::Vector2f(108, 38));
    rect3.setPosition(sf::Vector2f(220, 120));

    sf::Font font; font.loadFromFile("Fonts/BorisBlackBloxx.ttf");
    sf::Text text1("Bouton 1", font, 15);
    text1.setColor(sf::Color::Black);
    text1.setPosition(rect1.getPosition().x + 20, rect1.getPosition().y + 7);
    sf::Text text2("Bouton 2", font, 15);
    text2.setColor(sf::Color::Black);
    text2.setPosition(rect2.getPosition().x + 20, rect2.getPosition().y + 7);
    sf::Text text3("Bouton 3", font, 15);
    text3.setColor(sf::Color::Black);
    text3.setPosition(rect3.getPosition().x + 20, rect3.getPosition().y + 7);


    // Scrolling
    sf::View view(sf::FloatRect(210, 73, 280, 469));
    view.setViewport(sf::FloatRect((float)210/800, (float)73/600, (float)280/800, (float)469/600));

    while(window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
                window.close();
        }

        window.clear(sf::Color::Black);
        window.setView(view);
        window.draw(rect1);
        window.draw(rect2);
        window.draw(rect3);
        window.draw(text1);
        window.draw(text2);
        window.draw(text3);

        window.display();
    }

    return 0;
}

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Text Scale
« Réponse #14 le: Avril 18, 2013, 03:07:23 pm »
Ce code fonctionne très bien chez moi, j'ai le même résultat au pixel près avec et sans la vue.
Laurent Gomila - SFML developer