Hallo,
zurzeit programmieren mein Freund und ich auch eine GUI. Unsere GUI soll auch Windows und Buttons enthalten.
Nun zum Problem: Unsere Absicht ist es, dass wenn man ein Fenster verschiebt, sich der gesamte Inhalt des Fensters auch um die gleiche Position verschiebt. Aber leider scheitert es schon beim setzten der Buttons. Die Buttons werden wie folgt erzeugt:
|
C-/C++-Quelltext
|
1
2
3
4
|
Button eins(100, 50), zwei(100, 50), drei(100, 50);
eins.setPosition(sf::Vector2f(110, 0));
zwei.setPosition(sf::Vector2f(220, 0));
drei.setPosition(sf::Vector2f(330, 0));
|
Das Ergebnis ist nicht ganz das, was wir wollen (Anhang). Um relative Positionen zu schaffen, multiplizieren wir die bedein Transform-Matrizen des Fensters und des aktuellen GUI-Elements:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
void WidgetContainer::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
//std::vector<Widget*> _children;
for (auto &it : _children)
{
states.transform *= it->getTransform();
it->draw(target, states);
}
}
|
Nun zu den Positionen: Die Höhe (y-Achse), auf der die Buttons gesetzt werden, stimmt. Aber die Breite (x-Achse), auf der die Buttons gesetzte werden, stimmt überhaupt nicht.
Was haben wir falsch gemacht?
Danke im Voraus