文字を任意の場所に描画するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:文字関連処理

文字を任意の場所に描画するには

【解説】
読み込んだ文字を指定の位置に描画するには、text()命令を使います。

text命令は多彩な引数がある命令です。最もよく使うのは String型の文字列を引数に与えるケースではないでしょうか?(下記構文の赤字命令)。

text()命令の表示は、通常左から右へ向かう横書きスタイルになりますが、text(str, x1, y1, x2, y2) 命令を上手く使うと、簡単に縦書きスタイル(上から下へ)が実現できます。

各引数の例はサンプルソースを参照してください。

【構文】
以下は代表的な構文です。
text(c, x, y)
text(str, x, y)
text(str, x1, y1, x2, y2)

【パラメータ】
c    char: 表示する英数字
x    float: テキストの x 座標
y    float: テキストの y 座標
x1    float: デフォルトでは テキストの x 座標。rectMode() で意味が変わる
y1    float: デフォルトでは テキストの y 座標 。rectMode() で意味が変わる
x2    float: デフォルトでは テキストボックスの幅。rectMode() で意味が変わる
y2    float: デフォルトでは テキストボックスの高さ。rectMode() で意味が変わる

【戻り値】
void

【注意】
text()命令の動作は、textAlign()命令、rectMode()命令の影響を受けます。
デフォルトのtextAlign()位置は、文字の左下(正確にはtextAlign(LEFT、BASELINE);)である事に注意が必要です。

テキストのアライメントについては、「文字を揃えるには」記事を参考にしてください。

またtext()命令で表示されるフォントはtextFont() で指定されたものになります。フォントサイズはtextSize()で指定されたサイズ、またはtextFont()命令で指定されたサイズになります。

文字サイズが指定されていない場合、loadFont()命令で読み込む文字サイズが採用されるようです。例えばloadFont( “Meiryo-48.vlw” );なら、48ピクセルが初期値になります。

公式のリファレンスによれば、textFont()でフォントが指定されていない場合 sans-serif  フォント が使われるとありますが、実際のところはちょっと不明です(汗)。

【関連記事】
第2章:文字を表示しよう
文字データを読み込むには
文字を揃えるには
文字のアセントとディセント


●String文字表示例:

縦横が160ピクセルの実行結果ウィンドウを作成し、ありがち?な「ほげほげ」とう文字を、黒色で表示しています。

表示開始位置は、縦横とも実行結果ウィンドウの半分(つまり画面中央)です。

<出力サンプル>
text_sample1

 

●char文字表示例:

Stringではなくcharを表示する例です。あまり面白みのないサンプルですね(汗)。

<出力サンプル>
text_sample2

 

●特定の枠内に文字を表示する例:

ちょっと複雑な例です。text()の枠指定機能を利用して、文字を縦書にしています。

fWLeft、fWTop の位置から、幅=1文字分、高さ=(文字の高さ+字間)*文字数 の四角形を指定する事で、縦書を実現しています。
枠の高さや幅が足りないと、文字が表示されなくなるので注意が必要です。

rect()命令は枠をわかりやすく表示する為に加えている処理ですので、縦書の実現とは直接関係ありません。

文字の高さはアセント+ディセントで求まります。文字の高さに、次の文字先頭までの字間を加えたものがレディングになります。「文字のアセントとディセント」記事を参考にしてください。

<出力サンプル>
text_sample3

●応用例

( 参考URL:Gpro2 様)

少し長いですが、上記サンプルを実行すると色々な文字が画面を飛び跳ねます。
Gpro2様のプログラムを(ほとんど、そのままなんですが:汗)少しだけ改編しました。Gpro2様ありがとうございます。見ていて楽しいサンプルです。

<出力サンプル>
fontJump

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)