Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Mega76 le Mars 22, 2021, 06:14:54 pm

Titre: Afficher un cercle à partir d'une classe
Posté par: Mega76 le Mars 22, 2021, 06:14:54 pm
Bonjour.
J'essaie de me mettre à la SFML depuis peu.

Ce que je veux faire c'est afficher un cercle (pour faire un bouton plus tard) à partir d'une classe Bouton.

J'ai commencé un mini bout de code mais quand je compile j'ai un écran noir.


Je vous donne le code.

Main.cpp:
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

#include "Bouton.h"

int main()
{
    sf::VideoMode videoMode(400, 300);
    sf::RenderWindow window(videoMode, "Bonjour le monde !");

    while (window.isOpen())
    {
        sf::Event event;

        Bouton bouton1;  //<-- je crée mon bouton

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

        window.clear();

        bouton1.afficher(window); //<-- J'affiche le bouton (qui est un cercle)

        window.display();
    }

    return 0;
}


Bouton.h
#ifndef BOUTON_H
#define BOUTON_H

#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>



class Bouton
{
public:
    Bouton();
    void afficher(sf::RenderTarget& target);

private:
    sf::CircleShape cercle;
};

#endif // BOUTON_H
 

Bouton.cpp:
#include "Bouton.h"
#include <SFML/Graphics.hpp>

#include <SFML/Window.hpp>

Bouton::Bouton()
{
        sf::CircleShape cercle(20);
        cercle.setPosition(sf::Vector2f(50, 130));
        cercle.setFillColor(sf::Color::Green);
}

void Bouton::afficher(sf::RenderTarget &target)
{
    target.draw(cercle);
}
 
Titre: Re: Afficher un cercle à partir d'une classe
Posté par: G. le Mars 22, 2021, 07:23:36 pm
Tu crées un 2eme cercle appelé "cercle" localement dans ton constructeur au lieu d'utiliser ta donnée membre aussi appelée "cercle".
Initialise ta donnée membre "cercle" dans la liste d'initialisation de ton constructeur.

Bouton::Bouton() : cercle(20)
{
        cercle.setPosition(sf::Vector2f(50, 130));
        cercle.setFillColor(sf::Color::Green);
}
Titre: Re: Afficher un cercle à partir d'une classe
Posté par: carnecklace le Septembre 28, 2023, 06:09:12 am
Tu crées un 2eme cercle appelé "cercle" localement dans ton constructeur au lieu d'utiliser ta donnée membre aussi appelée "cercle". skibidi toilet (https://skibidi-toilet.io)
Initialise ta donnée membre "cercle" dans la liste d'initialisation de ton constructeur.

Bouton::Bouton() : cercle(20)
{
        cercle.setPosition(sf::Vector2f(50, 130));
        cercle.setFillColor(sf::Color::Green);
}
J'ai essayé et ça marche !
Titre: Re: Afficher un cercle à partir d'une classe
Posté par: maicleusa le Mars 28, 2024, 05:01:37 am
This post is a very detailed review of an important topic. I feel like I have improved my knowledge after reading it. slither io (https://slitherio.online)
Titre: Re: Afficher un cercle à partir d'une classe
Posté par: attractalderman le Avril 16, 2024, 05:07:06 pm
I have tried and it's work. Thanks.
basket random (https://basketrandom.io)