パレット色を使って、モードの色を、好みに合わせて作り換えます。
構文:
Palette [Get] [index, color]
Palette [Get] [index, r, g, b]
Palette [Get] Using arrayname(idx)
パラメタ:
Get
パレット情報を取得することを示します。パレット情報を設定するのでは有りません。
index
パレット索引
color
色属性
r
赤色成分
g
緑色成分
b
青色成分
Using
色の値の使用配列を示します。
arrayname(idx)
色属性を、取得、または設定する、配列とインデックス
説明:
Palette 命令文は、色の濃淡が 8bppまでの描画モードで、現在のパレットを検索するか、または、好みに合わせて作り換えるのに使います。
これを超える色数の多いモードでは、
Palette を使っても、効果がありません。
引数なしで
Palette を呼ぶと、現在の描画モードのために、デフォルトパレットを返します。
Screen (描画)命令文によって設定されるようにです。
Screenモードが初期化されるとき、
GfxLibは、
デフォルト・パレットを設定します。
1番目の構文
インデックスと色を指定するとき、これらは現在のモードに依存しています:
画面モード |
インデックス範囲 |
色の範囲 |
1 |
0-3 |
0-15 |
2 |
0-1 |
0-15 |
7,8 |
0-15 |
0-15 |
9 |
0-15 |
0-63 |
11 |
0-1 |
以下を見てください。 |
12 |
0-15 |
以下を見てください。 |
13 to 21 |
0-255 |
以下を見てください。 |
画面モード
1、
2、
7、
8、
9で、利用可能な範囲で、色の1つを、各色索引に割り当てることができます。
他のスクリーンモードでは、色は、
&hBBGGRR の形式で指定します。ここで、
BBは青色、
GGは緑色、そして、
RRは赤色の成分で、16進で、
&h0 〜
&h3F の範囲の値を指定します。(この範囲は、10進では、0-63 に相当します)
16進数の形式が好きでないなら、パラメタに通すために、以下の公式を使って、整数値を計算することができます:
color = red or (green shl 8) or (blue shl 16)
赤、緑、青は、それぞれ、
0-
63 の範囲内でなければなりません。
Palette によって受け入れられた色の値は、
RGB マクロで得られた形式と異なっていることに、注意して下さい。(赤と青の値は逆で、範囲は異なっています)。
これは、QBとの、下位互換性のためのものです。
2番目の構文
2番目の構文では、直接、赤、緑、青の成分を、4つのパラメタで Palette を呼ぶことによって、パレット・エントリーに指定します。
この場合、r、g、b の範囲は、それぞれ、0〜255 になります。
3番目の構文
Palette Using を使うと、色の値のリストを、一気に設定することができます。
現在の描画モードの、色の濃淡の深さで利用可能な色数に対して、十分な要素を保持できる配列を設定する必要があります(1bpp では 2、2bpp では 4、4bpp では 16、8bpp では 256)。
配列の要素は、上で説明された構文の色の整数値になります。
色は、与えられた idx から始まる arrayname に格納されます。索引は、ぞれのパレット索引に割り当てられます。索引は、0から始ります。
構文1と3は、QBとの後方の互換性のためのものです。
構文2は、パレットの取り扱いを容易にします。
パレットの変化は、画面上で、すぐに、目で確認できます。
Get オプションを指定すると、Palette は、色を設定する代わりに、現在のパレットの値を検索します。
パラメタは、使用される構文で指定するときと、同じ意味です。この場合、 r, g, b は、関数の出口で、RGB値を保持しているものを、参照として渡された変数です。
例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
' ただ一つの色を設定します。構文 1
Screen 15
Locate 1,
1:
Color 15
Print "Press any key to change my color!"
Sleep
' 今度は、色15の色調を、明るい赤に変えます。
Palette 15, &h00003F
Sleep
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
' ただ一つの色を取得します。構文 2
Dim As ulong r, g, b
Screen 13
Palette Get 32, r, g, b
Print "Color 32 hues:"
Print Using "Red:### Green:### Blue:###"; r; g; b
Sleep
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
' 全パレットを取得します。構文 3
Dim pal
(0 To 255) As ulong
Screen 13
Palette Get Using pal
For i
As Integer =
0 To 15
Print Using "Color ## = &"; i;
Hex(pal
(i
),
6)
Next i
Sleep
QBとの違い:
-
QBasic は、パレットを検索するために PALETTE GET をサポートしませんでした。
-
QBasic は、赤/緑/青の個々の値を渡すことはできませんでした。
参照:
描画予約語一覧