Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Wyśrodkowanie Tekstu

Ostatnio zmodyfikowano 2024-05-07 19:06
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[SFML] Wyśrodkowanie Tekstu
» 2024-05-06 13:44:22
Jak w SFML wyśrodkować obiekt typu sf::Text ?
Chodzi mi o coś w tym stylu :

C/C++
text.setOrigin( text.sizex / 2.f, text.sizey / 2.f );
P-181025
DejaVu
» 2024-05-06 13:46:28
Musisz użyć metody do obliczenia długości tekstu w zależności od czcionki i jej rozmiaru.

/edit:
Czemu nie zadajesz tych pytań do ChatGPT 4 skoro pisałeś, że go kupiłeś? :)
Aby wyśrodkować tekst w bibliotece SFML (Simple and Fast Multimedia Library) używając języka C++, potrzebujesz ustawić origin (punkt odniesienia) tekstu na jego środek. Zrobić to można poprzez obliczenie szerokości i wysokości tekstu za pomocą metody `getGlobalBounds()` i następnie ustawienie punktu odniesienia na połowę tej szerokości i wysokości. Tutaj masz przykład kodu, który to wykonuje:

```cpp
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "Centrowanie tekstu w SFML");

    sf::Font font;
    if (!font.loadFromFile("path/to/your/font.ttf")) // Podaj ścieżkę do twojego pliku z czcionką
    {
        // Error handling
    }

    sf::Text text;
    text.setFont(font);
    text.setString("Twoj tekst tutaj");
    text.setCharacterSize(24); // Ustaw rozmiar czcionki
    text.setFillColor(sf::Color::White); // Ustaw kolor tekstu

    // Pobierz rozmiar tekstu
    sf::FloatRect textRect = text.getLocalBounds();
    // Ustaw origin w środku tekstu
    text.setOrigin(textRect.left + textRect.width/2.0f, textRect.top + textRect.height/2.0f);
    // Ustaw pozycję tekstu na środku okna
    text.setPosition(sf::Vector2f(800/2.0f, 600/2.0f));

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(text);
        window.display();
    }

    return 0;
}
```

Kluczowymi linijkami są te, które obliczają i ustawiają origin tekstu. Metoda `getLocalBounds()` zwraca prostokąt, który obejmuje tekst (jego szerokość i wysokość). Następnie ustawiamy origin (`setOrigin`) na połowę szerokości i wysokości, aby punkt odniesienia był dokładnie w środku tekstu. Tekst jest następnie pozycjonowany w środku okna za pomocą `setPosition()`.

Pamiętaj, żeby dostosować ścieżkę do czcionki w `loadFromFile()` do twojego środowiska i dostępnych plików czcionek.
P-181026
tBane
Temat założony przez niniejszego użytkownika
» 2024-05-06 14:05:30
trudno mi jest się przestawić :D ale już mi pomógł i doradził:

C/C++
textname->setOrigin( textname->getLocalBounds().width / 2.f, textname->getLocalBounds().height / 2.f );

ładne wyśrodkowane teksty:

P-181027
DejaVu
» 2024-05-06 15:33:52
No i git. Jak już się trochę przyzwyczaisz do ChatGPT 4 to podziel się swoimi refleksjami. Jestem ciekaw Twojej opinii, ale moim zdaniem to Twój 'brakujący' deweloper do projektów :)
P-181028
tBane
Temat założony przez niniejszego użytkownika
» 2024-05-07 19:06:11
Tak, zgadzam się z tym. Wiele razy korzystałem z ChatGPT i wiele razy mi pomógł. Faktycznie w poprzedniej wersji często majaczył i podawał błędne rady, ale i tak był bardzo pomocny. W nowej wersji tzn. ChatGPT 4 jeszcze nie zdarzyło się, by źle mi doradził. Polecam każdemu korzystać z tego narzędzia :-)
P-181031
« 1 »
  Strona 1 z 1