[PAINT(2)] コマンド
指定された境界色で囲まれた領域を、指定されたタイルパターンまたはハッチングで埋めます。
文法 PAINT [(Wx1, Wy1) または STEP(x1, y1)] <タイルストリング>
[, <境界色パレット番号2>]
文例 PAINT (100, 100),TILE$ , 5
PAINT STEP(40, -20) ,TILE$, 5
絶対座標(Wx1, Wy1)点を内部に含み、<境界色パレット番号2>で囲まれた領域を、
<タイルストリング>で埋めます。
(Wx1, Wy1)点はSTEPによる[LP] からの相対座標 STEP(x1, y1)を使用できます。
<境界色パレット番号2>省略時は[COLOR(1)] 、[COLOR(2)] コマンドで指定の
フォアグランドカラーのパレット番号を使用します。
<タイルストリング> はタイリングに使用する基本タイルの大きさと
幾何学的模様を設定する文字列、またはハッチングを設定する文字列です。
[T]タイリングの基本タイルの場合は次の通りです。
タイルの大きさは、横方向 8ドット分と決められていますが、
縦方向の長さは<タイルストリング>の文字列の長さで決まります。
縦方向が nドットのタイルを作るためには、<タイルストリング>として、
8色中・8色カラーモードでは 3*n文字、
4096色中・16色モードでは 4*n文字の長さが必要です。
但し nの最大値は 8ドットです。
タイルの模様は、<タイルストリング>の文字列の
キャラクターコードの 2進数表現(ビットパターン)により表現されます。
<タイルストリング>の指定の方法は次の通りです。
<タイルストリング>中の各 1文字(バイト)のコードが
タイルの横 8ドットの線に対応します。
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 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
---20 の桁 |
&H55 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
---21 の桁 |
&HFF |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
---22 の桁 |
対応するパレット番号
|
5 |
6 |
5 |
6 |
5 |
6 |
5 |
6 |
|
この例では、3文字分を与えており、横 8ビットを縦 1行分となります。
各ドットについて、上の表で縦方向に 2進数としてパレット番号に読み換えします。
この場合、指定するタイルストリングのうちの最初の文字が、
最下位ビット 20の桁を表し、以後、21の桁、22の桁、となります。
この例では、パレット番号 5とパレット番号 6が交互に、
横 8ドットに指定されたことになります。
したがって、パレットが初期状態であれば水色と黄色が交互に出る模様になります。
例)4096色中・16色の場合
CHR$(&HCE)+CHR$(&H8C)+CHR$(&HD0)+CHR$(&H22)
ドット |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
&HCE |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
---20 の桁 |
&H8C |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
---21 の桁 |
&HD0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
---22 の桁 |
&H22 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
---23 の桁 |
対応するパレット番号
|
7 |
5 |
8 |
4 |
3 |
3 |
9 |
0 |
|
前の例と同じように、各ドットについて、
縦方向に 2進数として 4桁に読み換えることにより
16色の各パレット番号を指定することになります。
注意:
<タイルストリング>の文字列の文字数が
3(4096色中・16色の場合は 4)の倍数でないときには、
最後の半端な文字だけ無視されます。
また、文字列の文字数が 3文字(あるいは 4文字)に満たない場合は、
"Illegal function call" エラーとなります。
すでにタイリングされている領域を異なるパターンでタイリングしようとすると、
時間がかかったり、スタックを消費するために "Out of memory" エラーになる場合があります。
また、PAINTはビューポート内でのみ働きますので、
ビューポートの境界がPAINT動作の境界とみなされます。
また、(Wx, Wy)がウインドウの外に有る場合には、
"Illegal function call" エラーとなります。
[U]ハッチングの場合は次の通りです。
タイルストリング = "ハッチング定数文字列、ハッチング色のパレット番号"
ハッチング色のパレット番号は省略された場合、あるいは無効な値の場合、
現在のフォアグランド色となります。
ハッチング定数文字列は下記のとうりです。
ハッチング定数文字列 |
ハッチング |
HS_BDIAGONAL |
45 度の右上がり斜線ハッチ |
HS_CROSS |
水平、垂直の格子ハッチ |
HS_DIAGCROSS |
45 度の斜め格子ハッチ |
HS_FDIAGONAL |
45 度の右下がり斜線ハッチ |
HS_HORIZONTAL |
水平線ハッチ |
HS_VERTICAL |
垂直線ハッチ |
例えば
10 TILE$="HS_BDIAGONAL , 4"
20 PAINT (100, 100),TILE$ , 5
これは水色の境界線の中を、緑色の 右上がりの斜線でハッチングします。
または
10 TILE$= "HS_HORIZONTAL , 1"
20 PAINT STEP(40, -20) ,TILE$, 6
これは黄色の境界線の中を、青色の 水平線でハッチングします。
または
10 TILE$= "HS_DIAGCROSS"
20 PAINT STEP(40, -20) ,TILE$, 1
これは青色の境界線の中を、現在のフォアグランド色で 45 度の斜め格子ハッチングします。