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

Auteur Sujet: Afficher un cercle à partir d'une classe  (Lu 3668 fois)

0 Membres et 1 Invité sur ce sujet

Mega76

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Afficher un cercle à partir d'une classe
« 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);
}
 

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: Afficher un cercle à partir d'une classe
« Réponse #1 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);
}

attractalderman

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re: Afficher un cercle à partir d'une classe
« Réponse #2 le: Avril 16, 2024, 05:07:06 pm »
I have tried and it's work. Thanks.