N88-BASIC(86) PAINT命令(2)

[2]PAINT

機能
指定された境界色で囲まれた領域を指定されたタイルパターンで埋める
書式
PAINT (Wx,Wy)/STEP(x,y),タイルストリング[,境界色]
文例
PAINT(255,120),TILE$,4,BACK$

(Wx, Wy)を中心点として,〈境界色〉で固まれた領域をタイルパターンで埋めます. (WX,Wy)はワールド座標で指定します.STEPをつけて, LP(最終参照点)からの相対座標(x,y)で指定することもできます.

〈タイルストリング〉は,タイリングに用いられる基本タイルの大きさと模様を決定する文字列です.タイルの大きさは,横方向は8ドット分と決められていますが,縦方向の長さは〈タイルストリング〉の文字列の長さで決まります.縦方向がnドットのタイルを作るためには,〈タイルストリング〉として,白黒モードでn文字, 8色中・8色モードおよび4096色中・8色モードで3*n文字, 4096色中・16色モードで4*n文字の長さがそれぞれ必要です.タイルの模様は,〈タイルストリング〉の文字列のキャラクタコードの2進数表現(ビットパターン)により表現されます.〈タイルストリング〉の指定の方法は白黒モードとカラーモードとで異なります.

白黒モードの場合

〈タイルストリング〉中の各1文字(バイト)のコードがタイルの横8ドットの線に対応します.文字コードの2進数表現で,タイルの横8ドットのうち, 1に対応するドットはセット(白),0に対応するドットはリセット(黒)として表されます.〈タイルストリング〉がn文字の長さであれば,その文字列の表す模様は,このようにして決定される横8ドットのパターンを縦にn文字分だけ並べたパターンになります.

例) CHR$(&HAA)+CHR$(&H55)
16進数表現 2進数表現 ドットパターン
&HAA 10101010 ●○●○●○●○
&H55 01010101 ○●○●○●○●

2文字からなる簡単なタイルストリングの例です.この2文字は1であるビットと0であるビットが互いに逆になっています.このパターンを基本タイルとして指定された領域を埋めれば,細かい市松模様になりますが,スクリーンのドットが大変細かいため,灰色のように見えます.

カラーモードの場合

白黒モードと同様に,タイルの模様は〈タイルストリング〉に対応するビットパターンによって決定されます.白黒モードと異なる点は, 8色中・8色モードおよび4096色中・8色モードの場合は3文字分ごとに,また4096色中・16色モードの場合は4文字分ごとに,タイルの横8ドット(1ライン分)の色がパレット番号として決定されることです.色の決定のされ方については,次の例を参照してください.

例) 8色中・8色モードあるいは4096色中・8色モードの場合
CHR$(&HAA) +CHR$(&H55) +CHR$(&HFF)
ドット 1 2 3 4 5 6 7 8  
&HAA
&H55
&HFF
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1
←20の桁
←21の桁
←22の桁
対応するパレット番号
5 6 5 6 5 6 5 6
 

各ドットについて,縦方向に2進数としてパレット番号に読み換えます.この場合,指定するタイルストリングのうちの最初の文字が最下位ビット(2^0)の桁を表し,以後, 2^1の桁,2^2の桁,となります.

この例では,パレット番号5とパレット番号6が交互に,横8ドットに指定されたことになります.したがって,パレットが初期状態であれば水色と黄色が交互に出る模様になります.

例)4096色中・16色モードの場合
CHR$(&HCE) +CHR$(&H8C) +CHR$(&HD0) +CHR$(&H22)
ドット 1 2 3 4 5 6 7 8  
&HCE
&H8C
&HD0
&H22
1 1 0 0 1 1 1 0
1 0 0 0 1 1 0 0
1 1 0 1 0 0 0 0
0 0 1 0 0 0 1 0
←20の桁
←21の桁
←22の桁
←23の桁
対応するパレット番号 7 5 8 4 3 3 9 0  

前の例と同じように,各ドットについて,縦方向に2進数としてパレット番号に読み換えることにより,表のような結果となります.

注意:

カラーモードの場合, 〈タイルストリング〉の文字数が3(4096色中・16色モードの場合は4)の倍数でないときには,文字列の後ろから, 3(あるいは4)で割った余りの数だけ無視されます.また, 3文字(あるいは4文字)に満たない場合には"Illegal function call"エラーとなります.

すでにタイリングされている領域を異なるパターンでタイリングしようとすると,時間がかかったり,スタックを消費するために、"Out of memory"エラーになったりすることがあります.また, PAINTはビューポート内でのみ働きますので,ビューポートの境界がPAINT動作の境界とみなされます.

また, (Wx, Wy)がウィンドウの外にある場合には, "Illegal function call"エラーとなります.

出典:N88-日本語BASIC(86)(Ver6.2) リファレンスマニュアル、日本電気株式会社、1991年発行


inserted by FC2 system