[SFML] Wyśrodkowanie Tekstu
Ostatnio zmodyfikowano 2024-05-07 19:06
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 : text.setOrigin( text.sizex / 2.f, text.sizey / 2.f );
|
|
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. |
|
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ł: textname->setOrigin( textname->getLocalBounds().width / 2.f, textname->getLocalBounds().height / 2.f );
ładne wyśrodkowane teksty: |
|
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 :) |
|
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 :-) |
|
« 1 » |