Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

1

02.10.2015, 07:50

[C++ | SFML] Text genau mittig in einem Button setzten

Hallo Leute,
zurzeit programmierer ich ein Spiel für einen Wettbewerb. Nun bin ich dabei, ein Menü zu erstellen (klappt auch ;)), aber ich bin noch nicht ganz zufrieden mit den Texten der Buttons, da diese nicht im Button zentriert sind (im Anhang ein ScreenShot). Hier der Code:

.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Button::Button(std::string text, sf::Vector2f position)
    : clicked(false)
    , hovered(false)
{
    loadFont();
    loadTexture();

    // Position für den Button erstellen
    mButtonSprite.setTextureRect(sf::IntRect(0, 0, 300, 50));
    mButtonSprite.setPosition(position);

    // Eigenschaften des Textes
    mButtonText.setString(text);
    mButtonText.setPosition(position.x + 110.f, position.y + 5.f);
    mButtonText.setCharacterSize(23);
    mButtonText.setColor(sf::Color(sf::Color::Black));

}


Wie bekomme ich hin, dass die Texte zentriert sind. Ich könnte zwar im Konstruktor nach der Position fragen, aber das finde ich, ist nicht die perfekte Lösung.
Vielen Dank im Voraus :)
»cojo2015« hat folgendes Bild angehängt:
  • Unbenannt.PNG

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

02.10.2015, 08:14

sf::Text::getLocalBounds und sf::Sprite::getGlobalBounds dürfte einen Anstoß geben. Wenn es Dir im Konstruktor nicht gefällt, weiß ich allerdings nicht, was man Dir außer einer update-Methode noch vorschlagen könnte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

02.10.2015, 15:58

Um mal Blue seine Hinweise zu erweitern.

Stehen dir im Konstruktor bereits alle benötigten informationen zur Verfügung:
  • position vom Button
  • größe des Buttons
  • länge/höhe des Textes

Mit diesen Angaben lässt sich dann auch genau die Position berechnen, an der du den Text platzieren musst, damit er mittig vom Button ist.

Damit eine allgemain gültige Formel aufzustellen überlasse ich dir ;)
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

4

02.10.2015, 20:27

Danke an euch beide :). Das bekomme ich bestimmt hin. Kann nur dauern...

Werbeanzeige