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

Auteur Sujet: ConvexShape ne prends pas les couleurs  (Lu 2741 fois)

0 Membres et 1 Invité sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
ConvexShape ne prends pas les couleurs
« le: Janvier 05, 2014, 06:03:03 pm »
Bonjour tout le monde,
J'ai récemment fait une classe de rectangle arrondi, et j'aimerai lui donner des couleurs.
J'ai donc fait un code basique, assez simple..
Main.cpp
int main() //évidemment j'ai réduit mon code la
{
RoundRect * rect2= new RoundRect(sf::Vector2f(10.f,230.f), sf::Vector2f(300.f,50.f), 20, 5,sf::Color::Yellow, sf::Color::Cyan, 3);
RoundRect * rect = new RoundRect(sf::Vector2f(10.F,10.f), sf::Vector2f(200.f, 200.f), 10.f, 10, sf::Color::Green, sf::Color::Blue, 2);

window.clear();
window.draw(*rect);
window.draw(*rect2);
window.display();
return 0;
}
 

RoundRect.hpp
class RoundRect : public sf::Shape
{
public:
         RoundRect(const sf::Vector2f& position, const sf::Vector2f& dimensions,const float& borderRadius, const int unsigned& pointCount, const sf::Color& fillcolor, const sf::Color& outColor, const float& outThickness);
        ~RoundRect();

        virtual unsigned int getPointCount() const
        {
                return m_shape.getPointCount();
        }
        virtual sf::Vector2f getPoint (unsigned int index) const
        {
                return m_shape.getPoint(index);
        }

private:
        sf::ConvexShape m_shape;
};
 

Et pour finir, le .cpp
RoundRect::RoundRect(const sf::Vector2f& position, const sf::Vector2f& dimensions,const float& borderRadius,  const int unsigned& pointCount, const sf::Color& fillcolor, const sf::Color& outColor, const float& outThickness)
{
        //Un gros constructeur
        m_shape.setOutlineThickness(outThickness);
        m_shape.setFillColor(fillcolor);
        m_shape.setOutlineColor(outColor);
        update();
}
 

Mais, mes "rectangles" restent blancs  :-[ . Pourtant, j'ai bien des formes convexes..
Si quelqu'un aurait une idée ça serait sympa de la poster  ;D

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : ConvexShape ne prends pas les couleurs
« Réponse #1 le: Janvier 05, 2014, 09:39:29 pm »
Tu as deux sf::Shape dans ta classe : un en membre et un hérité. Il y en a visiblement un de trop.
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
[Résolu]ConvexShape ne prends pas les couleurs
« Réponse #2 le: Janvier 06, 2014, 07:38:10 pm »
Merci beaucoup ça marche si ma classe hérite de sf::Drawable  :D

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : ConvexShape ne prends pas les couleurs
« Réponse #3 le: Janvier 06, 2014, 09:30:39 pm »
Pourquoi ne pas hériter de sf::Shape ?
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : ConvexShape ne prends pas les couleurs
« Réponse #4 le: Janvier 09, 2014, 05:57:00 pm »
Je voudrais bien hériter de sf::shape, mais si je fais ça, comme je l'ai dit plus tot, les couleurs ne s'appliquent pas  :o . Ca , c'est sûrement une erreur de ma part mais comme ça marche comme ça pour l'instant je touche a rien  ;D

kimci86

  • Full Member
  • ***
  • Messages: 125
    • Voir le profil
Re : ConvexShape ne prends pas les couleurs
« Réponse #5 le: Janvier 09, 2014, 06:40:01 pm »
Si ta classe hérite de sf::Shape, tu n'as pas besoin du membre m_shape.
D'après la documentation de sf::Shape,
Citer
You can write your own derived shape class, there are only two virtual functions to override:
  • getPointCount must return the number of points of the shape
  • getPoint must return the points of the shape

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : ConvexShape ne prends pas les couleurs
« Réponse #6 le: Janvier 09, 2014, 07:34:28 pm »
OK je viens de remplacer m_shape par m_pointcount et un vector de sf::vector2f appelé m_points et ça marche niquel  ;D
Merci de m'avoir aidé à optimiser ma classe

kimci86

  • Full Member
  • ***
  • Messages: 125
    • Voir le profil
Re : ConvexShape ne prends pas les couleurs
« Réponse #7 le: Janvier 09, 2014, 09:11:22 pm »
Si tu veux optimiser, saches que tu n'as pas besoin de stocker les points dans ta classe. La classe sf::Shape remplit déjà ce rôle. Il suffit que la méthode getPoint de ta classe calcule la position d'un point d'indice donné.