11章.文字列の表示(後編)
1999.10.16

☆装飾文字

G@PRINT関数は単に文字列を表示するだけの機能であり、美しい装飾を施した文字列を表示することは出来ません。しかし、ものは使いようで、アイデアさえあれば、少しは凝った装飾を描き出すことが出来るでしょう。
次に、いくつかのサンプルをのせます。ただし、これから説明する方法は、1つの文字列のために、複数回G@PRINT関数を実行するので、表示速度は遅くなることを、あらかじめ言っておきます。

☆影

演出のため、文字列に影を付けたい場合が出来たとします。こう言うときは、G@PRINT関数を2度実行すれば、何となくそれらしきものが表現できます。
例えば、文字列を表示する座標からX座標+4、Y座標+4(斜め右下)に影の持ち主となる文字列を少し暗い色で表示後、影の持ち主となる文字列を表示すれば、影らしく見えるはずです。説明は少し分かりづらいかもしれませんが、次のサンプルプログラムを参照していただければ、簡単に理解できるでしょう。

CH = G@SETUP( 640 , 480 , 16 , 1 )
G@CHRCLEAR( CH )
G@COLOR(128,0,0)
G@PRINT( CH , 4 , 4 , "Hello!!" )
G@COLOR(255,0,0)
G@PRINT( CH , 0 , 0 , "Hello!!" )
G@FLIP( )
LOOP; S@WAIT( ); ENDLOOP
☆縁取り

文字列に縁を付けてみます。考え方は影の付け方とほぼ同じです。例えば、文字列の周りに1ドット分の縁を付けるには、文字列の表示座標からX座標±1、Y座標±1(上下左右に1ドットずれ)に縁の持ち主となる文字列を表示すればよいでしょう。次にサンプルプログラムを載せるので参照してみてください。

CH = G@SETUP( 640 , 480 , 16 , 1 )
G@CHRCLEAR( CH )
G@COLOR( 0 , 128 , 128 )
G@PRINT( CH , 0 , 1 , "Hello!!" )
G@PRINT( CH , 2 , 1 , "Hello!!" )
G@PRINT( CH , 1 , 0 , "Hello!!" )
G@PRINT( CH , 1 , 2 , "Hello!!" )
G@COLOR( 255 , 0 , 0 )
G@PRINT( CH , 1 , 1 , "Hello!!" )
G@FLIP( )
LOOP; S@WAIT( ); ENDLOOP
☆丸みを付ける

最後は、丸みのある文字の表示方法です。考え方は、縁取りと全く同じで、縁の色を表示したい文字列に近くすると、丸みを帯びたように見えるというものです。説明よりもサンプルプログラムを見た方が理解が早いでしょう。

CH = G@SETUP( 640 , 480 , 16 , 1 )
G@CHRCLEAR( CH )
G@COLOR(192,0,0)
G@PRINT( CH , 0 , 1 , "Hello!!" )
G@PRINT( CH , 2 , 1 , "Hello!!" )
G@PRINT( CH , 1 , 0 , "Hello!!" )
G@PRINT( CH , 1 , 2 , "Hello!!" )
G@COLOR(255,0,0)
G@PRINT( CH , 1 , 1 , "Hello!!" )
G@FLIP( )
LOOP; S@WAIT( ); ENDLOOP