使用调色的颜色自定义颜色
语法
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 | 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中,您可以为每个颜色索引赋值可用范围中的一种颜色。在其他屏幕模式下,颜色必须以
&hBBGGRR 格式指定,其中
BB ,
GG 和
RR 为蓝色,绿色和红色组件,范围为
&h0 -
&h3F(十六进制)(
0-
63,十进制)。如果不喜欢十六进制形式,可以使用以下公式计算要传递给此参数的整数值:
color = red Or (green Shl 8) Or (blue Shl 16)红色,绿色和蓝色的范围必须为
0 -
63.请注意,
Palette接受的颜色值是
不与
RGB宏返回的相同形式(红色和蓝色字段反转,范围不同);这是为了向后兼容QB。
第二种形式
在第二种形式中,您可以通过使用4个参数调用Palette直接指定调色板条目的红色,绿色和蓝色组件。在这种情况下,r ,g 和b 必须在0 - 255范围内。
第三种形式调用Palette Using可以一次设置一个颜色值列表;您应该传递一个包含足够元素的数组,作为当前图形模式颜色深度可用的颜色索引(2bpp为2,2bpp为4,4bpp为16,8bpp为256)。数组元素必须是上述形式的整数颜色值。从给定的idx 索引开始存储的arrayname 中的颜色随后被赋值给每个调色板索引,从索引0开始。
表1和表3用于向后兼容QB;表单2旨在减轻调色板的处理。调色板上的任何更改都会立即显示在屏幕上。
如果指定了
Get选项,
Palette将检索当前调色板的颜色值。参数与正在使用的形式具有相同的含义,但在这种情况下,颜色
r ,
g 和
b 必须是通过引用传递的变量,该变量将在函数退出时保存颜色RGB值。
例子
'设置单色,形式1。
Screen 15
Locate 1,1: Color 15
Print "按任意键改变我的颜色!"
Sleep
'现在改变颜色15色调到明亮的红色
Palette 15, &h00003F
Sleep
'获得单一颜色,形式2。
Dim As Integer r, g, b
Screen 13
Palette Get 32, r, g, b
Print "颜色32色调:"
Print Using "红色:###绿色:###蓝色:###"; r; g; b
Sleep
'获得整个调色板,形式3。
Dim pal(0 To 255) As Integer
Screen 13
Palette Get Using pal
For i As Integer = 0 To 15
Print Using "颜色## = &"; i; Hex(pal(i), 6)
Next i
Sleep
与QB差别
- QBasic不支持PALETTE GET检索调色板。
- QBasic不允许通过个别的红/绿/蓝值。
参考