2013-07-25 61 views
6

私はちょうどSDL2_ttfを使い始めました。 TTF_RenderText_Blendedで画面上にテキストを表示する方法を知りましたが、改行や自動折り返しはどうすればできますか?SDL-TTFで改行と改行を行う方法は?

  1. \nをサポートしていないようです。それはちょうどラインを下るのではなく、スペースを作成するだけです。これをサポートする方法はありますか?具体的には、異なるY座標でのRenderTextの複数の呼び出しではなく、テキストの適切な行の高さを使用します。
  2. X、Y座標と幅を指定すると、その幅に達するたびに自動的に行を移動させることができます(単語間で区切ります)。

答えて

18

TTF_RenderText_Blendedの代わりにTTF_RenderText_Blended_Wrappedを使用してください。それは追加のパラメータをとります:ピクセル単位の幅。その後テキストが次の行に壊れます。

+0

標準ライブラリのその部分ですか?私はそれに関する文書を見つけることができません。それが存在すれば、それは甘いです。 – mpen

+0

最新のSDL_ttfです。私は適切なドキュメンテーションを見つけることができません。なぜなら、それについてのリファレンスは何もありません。なぜなら、それが動作することを保証することができます。 – Mars

+0

VCSになければなりません。..... 2.0.11ソースには存在しません。 Hrm ...ちょうど2.0.12をダウンロードし、そこにあります。驚くばかり。 – mpen

2

SDL_TTFはラッピングを行わないため、独自に記述する必要があります。

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

は、文字列の幅と高さを指定します。

+0

もう少し深いことを望んでいましたが、私自身のフォントマネージャクラスを書くことができます。 – mpen

+0

好きなときに私はいくつかのコードで動かすことができます。 CまたはC++?私はいつも長いメッセージをいくつかの短いメッセージに分割しました。実際には – parkydr

+0

C#です。私はSDL2のラッパーを書いています。あなたはコードを書く必要はありません、私はちょっとした落とし穴に気づいただけです。私が今やるべきことを理解できないことの一つはカーニングです。 – mpen