[SFML 2.1] Zła pozycja tekstu
Ostatnio zmodyfikowano 2014-02-22 19:56
Solpatium Temat założony przez niniejszego użytkownika |
[SFML 2.1] Zła pozycja tekstu » 2014-02-22 17:00:01 Witam! Najlepiej będzie jeśli od razu pokażę w czym rzecz. #include <SFML/Graphics.hpp> int main() { sf::RenderWindow okno( sf::VideoMode( 800, 400 ), "Przyklad" ); sf::Font czcionka; czcionka.loadFromFile( "arial.ttf" ); sf::Text Tekst( "ABCDEF", czcionka, 200 ); Tekst.setPosition( 0.0f, 0.0f ); sf::RectangleShape kwadrat; kwadrat.setPosition( 0.0f, 0.0f ); kwadrat.setSize( sf::Vector2f( 50.0f, 50.0f ) ); kwadrat.setFillColor( sf::Color::Red ); while( okno.isOpen() ) { sf::Event event; while( okno.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) okno.close(); } okno.clear(); okno.draw( Tekst ); okno.draw( kwadrat ); okno.display(); } return 0; }
Powyższy program produkuje taki rezultat: Problem leży w tym, że pozycja tekstu ustawiona jest na punkt o współrzędnych(0,0) (punkt ten wyznacza lewy górny róg czerwonego kwadratu) i jak widać tylko pierwsza współrzędna się zgadza. W pionie napis im jest większy tym niżej się znajduje (tutaj litery zaczynają się od (0,55)). Nawet napisy o wielkości 20 są niżej o jakieś 5 pikseli. Chyba nie ma więc jakiejś prostej proporcji. Ręczne przesuwanie napisu o jakąś wartość odpada. W jaki sposób mogę ustawić dowolny tekst na dowolnych współrzędnych, tak aby zaczynał się poprawnie, a nie "uciekał" w dół? Od razu zaznaczam, że szukałem rozwiązania na internecie, jednak nie znalazłem niczego co by działało. Ps. Próbowałem używać paru różnych czcionek, wszystkie dawały ten sam rezultat. |
|
Solpatium Temat założony przez niniejszego użytkownika |
» 2014-02-22 19:56:39 Po długich poszukiwaniach, próbach użycia sf::Glyph itd. w końcu znalazłem zaskakująco proste rozwiązanie. Wystarczy zrobić coś takiego: Tekst.setPosition( 0, 0 ); Tekst.setPosition( 0, 0 - Tekst.getLocalBounds().top );
|
|
« 1 » |