2013-07-25 13 views
6

Właśnie zaczął używać SDL2_ttf. Mam zorientowali się, jak dostać się jakiś tekst na ekranie TTF_RenderText_Blended, ale w jaki sposób mogę to zrobić, line-przerwy i automatyczne zawijanie?Jak wykonywać podział wierszy i zawijanie wierszy za pomocą SDL-TTF?

  1. To nie wydaje się wspierać \n; tworzy po prostu spację zamiast schodzić w dół. Czy istnieje sposób na dodanie do tego wsparcia? W szczególności, używając odpowiedniej wysokości wiersza tekstu, a nie wielu wywołań do RenderText przy różnych współrzędnych Y.
  2. Biorąc X, Y koordynować i szerokości, jak mogę mieć to automatycznie przejdzie linię ilekroć że szerokość jest osiągnięta (zerwania między słowami)?

Odpowiedz

18

Zamiast TTF_RenderText_Blended użyć TTF_RenderText_Blended_Wrapped. Zajmuje dodatkowy parametr: szerokość w pikselach, po którym tekst zostanie podzielony na następny wiersz.

+0

Czy jest to część standardowej biblioteki? Nie mogę znaleźć żadnej dokumentacji na ten temat. Jeśli to istnieje, to jest słodkie. – mpen

+0

Jest w najnowszym SDL_ttf. Nie mogę znaleźć odpowiedniej dokumentacji (nie wiem dlaczego nie ma w ogóle odniesienia do tego), ale mogę was zapewnić, że to działa. – Mars

+0

Musi być w VCS, a następnie ..... nie istnieje w źródłach 2.0.11. Hrm ... Właśnie pobrano wersję 2.0.12 i już tam jest. Niesamowite. – mpen

2

SDL_TTF nie pakuje, musisz napisać własny.

TTF_Font* ttf; 
TTF_SizeText(ttf, "Hello World", &w, &h); 

podaje szerokość i wysokość napisu.

+0

Miałem nadzieję na coś nieco bardziej szczegółowe, ale myślę, że mogę napisać własną klasę font-menedżera. – mpen

+0

Mogę spróbować kodu, jeśli chcesz. C lub C++? Zawsze dzieliłem długie wiadomości na kilka krótkich. – parkydr

+0

C#, faktycznie. Piszę wrapper wokół SDL2. Nie musisz pisać żadnego kodu, chciałem tylko mieć świadomość wszelkich pułapek. Jedną rzeczą, której nie potrafię wymyślić, jest kerning. – mpen

Powiązane problemy