2017-09-19 4 views
1

Ich möchte kombinieren sf: RectangleShape und sf :: Text in ein Zeichenobjekt, so dass ich nur die Funktion mWindow.draw() einmal für die zwei Objekte aufrufen muss. Ist es möglich?SFML kombinieren Zeichenobjekte

Antwort

1

Was Sie tun können, ist eine Klasse implementieren, die von sf::Drawable erbt, und überschreiben Sie die draw Funktion, um sowohl Ihr Rechteck und Ihren Text zu zeichnen. Ihr Renderfenster wird sich um den Rest kümmern.

class BoxAndText : public sf::Drawable 
{ 
public: 
    sf::RectangleShape rect; 
    sf::Text text; 
private: 
    void draw(sf::RenderTarget& target, sf::RenderStates states) const override 
    { 
     target.draw(rect, states); 
     target.draw(text, states); 
    } 
}; 
+0

Vielen Dank für Ihre Antwort! Aber wie benutze ich die Funktion dann? target.draw (Fenster)? –

+0

@NotImportant: Sie rufen diese Funktion nicht direkt auf. Es wird von 'sf :: RenderWindow :: draw' verwendet. Wenn Sie also ein 'BoxAndText'-Objekt erstellen, rufen Sie' mWindow.draw (object) 'auf, genau wie bei jedem anderen Zeichensatz (genau die Syntax, die Sie angefordert haben). –

+0

okay danke! –