DrawFormattedText
[nx, ny, textbounds] = DrawFormattedText(win, tstring [, sx][, sy][, color][, wrapat][, flipHorizontal][, flipVertical][, vSpacing][, righttoleft])
'win' で指定されるPTBのウィンドウに 'tstring' を描画します。
'tstring' は改行を意味する \n を含むことができます。\n のところでは必ず改行を行います。(つまり複数行にわたる文字を描画できます)
'sx' はテキストの左端の境界を定義します。省略された場合は、座標ゼロから描画します。
sx を 'center' (シングルクオーテーションを忘れずに)とすると、水平方向に中央揃えされます。
'sy' はテキストの上端の境界を定義します。省略された場合は、ウィンドウの一番上から描画します。
sy を 'center' (シングルクオーテーションを忘れずに)とすると、垂直方向に中央揃えされます。
'color' は文字の色で、カラーインデックスか、RGB値の3要素か、アルファブレンディングを含めた4要素です。
color が省略された場合、前回のテキスト描画で使用された色が使われます。
'wrapat' が指定された場合、, 'wrapat' よりも長い部分は自動的に改行されます。
これはWrapString 関数を呼び出すことによって行われます。
注意点として、UTF-8 エンコードや、uint8の文字列のような非アスキー文字列(日本語など)においては適切に動作しないかもしれません。
'flipHorizontal' が1に設定されているとき、鏡をあいだにおいたように、水平方向に反転します。
'flipVertical' が1に設定されているとき、鏡をあいだにおいたように、垂直方向に反転します。
'vSpacing' 行間を指定します。デフォルトは1です。
'righttoleft' が1に設定されていると、右から左に文字が流れるように描画します。
The function employs window clipping by default. Text lines that are
detected as lying completely outside the 'win'dow will not be drawn, but
clipped away. This allows to draw multi-page text (multiple screen
heights) without too much loss of drawing speed. If you find the clipping
to interfere with text layout of exotic texts/fonts at exotic sizes and
formatting, you can define the global variable...
global ptb_drawformattedtext_disableClipping;
... and set it like this ...
ptb_drawformattedtext_disableClipping = 1;
... to disable the clipping.
Clipping also gets disabled if you request the optional 3rd return
parameter 'textbounds' to ensure correct computation of a bounding box
that covers the complete text. You can enforce clipping by setting
ptb_drawformattedtext_disableClipping = -1; however, computed bounding
boxes will then only describe the currently visible (non-clipped) text.
--- 返り値について --
(nx, ny) はテキスト描画(を終了した時点の)カーソルの座標。
(nx, ny) はすでに描画されたテキストに続けてテキストを書き加えたいときに、開始位置として利用できます。
'textbounds' は描画されたテキストを囲む四角形の境界。この境界は、大まかな計算によるものです。したがって、あるフォントや、スタイル、OSによっては、誤った結果を返すかもしれません。
デモ DrawFormattedTextDemo もご覧ください。