Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Rafnavi le Novembre 04, 2015, 01:42:46 am

Titre: Le rectangle n'apparait pas dans ma fenêtre [Résolu]
Posté par: Rafnavi le Novembre 04, 2015, 01:42:46 am
J'ai un problème, mon rectangle que j'ai normalement crée et dessiné n'apparait pas sur ma fenêtre...
Je suis sur VisualStudio2015.


Voici le code:


[/#include <SFML/Graphics.hpp>

#pragma region variables
sf::CircleShape cercle;
sf::RenderWindow windowr;
sf::RectangleShape rect;
#pragma endregion variables


int main()
{    

//Création fenêtre

sf::Window window(sf::VideoMode(800, 600), "StepBlocks");

//Paramètres rectangle

        {
                rect.setSize(sf::Vector2f(100, 100));
                rect.setPosition(10, 10);
                rect.setFillColor(sf::Color::Red);
        }

//Quand la fenêtre est ouverte

        while (window.isOpen())
        {
                sf::Event event;
                while (window.pollEvent(event))
                {
   
//Si on appuie sur ESC

                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Escape))
                                window.close();

//Si on appuie sur fermer

                        if (event.type == sf::Event::Closed)
                                window.close();
                }

//Dessin du rectangle
               
                windowr.draw(rect);
                windowr.display();
                windowr.clear();
               
        }

        return 0;

}]



Merci d'avance pour votre aide! :)
Titre: Re : Le rectangle n'apparait pas dans ma fenêtre
Posté par: G. le Novembre 04, 2015, 04:01:41 am
Pourquoi t'as 2 fenêtres ?
Une sf::Window initialisée et ouverte sur laquelle tu ne dessines rien, et une sf::RenderWindow non-initialisée sur laquelle tu dessines ton rectangle.
Si tu ne veux qu'une fenêtre, n'utilise qu'une fenêtre.
Si tu veux dessiner quelque chose avec SFML sur cette fenêtre, il faut que cette fenêtre soit une sf::RenderWindow.

En gros dégage windowr et fais de window une sf::RenderWindow plutôt qu'une sf::Window


Il me semble que c'est pas conseillé de créer des fenêtres statiques comme tu le fais, d'autant plus que dans le cas que tu montres ça n'a aucun intérêt.
Ensuite, sf::Keyboard::isKeyPressed c'est pas un évènement. C'est pas incorrect de l'utiliser à l'intérieur de ta boucle d'évènement, mais si tu comprends pas la différence entre les évènements et le isKeyPressed tu risques d'être un peu perdu plus tard. Tu devrais faire ça avec l'évènement KeyPressed (ou KeyReleased) et vérifier si la touche pressée est Escape. Comme dans le tutoriel sur les évènements (http://www.sfml-dev.org/tutorials/2.3/window-events-fr.php#les-cevcinements-keypressed-et-keyreleased).
Titre: Re : Le rectangle n'apparait pas dans ma fenêtre
Posté par: Rafnavi le Novembre 04, 2015, 07:40:45 am
 ;D Merci beaucoup, jai fais ce que tavait dit et ça marche!