FreeBASIC マニュアルのトップに戻る

FreeBASIC Palette

目次→描画ライブラリー参考→2次元 描画関数PALETTE←オリジナル・サイト

PALETTE 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

パレット色を使って、モードの色を、好みに合わせて作り換えます。

構文:
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 以下を見てください。

 画面モード12789で、利用可能な範囲で、色の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 を呼ぶことによって、パレット・エントリーに指定します。
 この場合、rgb の範囲は、それぞれ、0255 になります。

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との違い:

参照:
 描画予約語一覧

2次元 描画関数に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2022-10-17 03:45:52
日本語翻訳:WATANABE Makoto、原文著作者:SysOp


ホームページのトップに戻る

表示-非営利-継承