Screen (控制台)
 
获取给定位置的字符或颜色属性

语法

Declare Function Screen ( ByVal row As Integer, ByVal column As Integer, ByVal colorflag As Integer = 0 ) As Integer

用法

result = Screen( row , column [, colorflag ] )

参数

row
基于1的偏移量从控制台的左上角。
column
基于1的偏移量从控制台的左上角。
colorflag
如果等于0,则返回ASCII代码,否则返回颜色属性。如果省略,则默认为0。

返回值

字符的ASCII或颜色属性。

说明

Screen返回在控制台输出的给定位置处找到的字符或颜色属性。它在控制台模式和图形模式下工作。

颜色属性的格式取决于当前的颜色深度:

如果颜色类型是每像素高达4位(如Win32控制台)的调色板类型,则颜色属性是8位值,其中较高的四位保持单元格背景颜色,低四位保持前景(字符)颜色。

如果颜色类型是8位调色板,则颜色属性是16位值,高字节保存背景颜色,低字节保存前景色。

如果颜色类型为全色,则颜色属性为32位整数,保持单色值。如果colorflag 等于1,则返回前景色;如果colorflag 等于2,则返回背景颜色。


标准16调色板的颜色值为:

颜色颜色
0黑色8灰色
1蓝色9亮蓝色
2绿色10明亮的绿色
3青色11明亮的青色
412亮红
5品红13
6棕色14黄色
7白色15明亮的白色


例子

Dim character_ascii_value As Integer
Dim attribute As Integer
Dim background As Integer
Dim cell_color As Integer
Dim row As Integer, col As Integer

character_ascii_value = Screen( row, col )
attribute = Screen( row, col, 1 )
background = attribute Shr 4
cell_color = attribute And &hf


''打开一个4位像素的图形屏幕
''(或者,省略这一行来使用控制台)
ScreenRes 320, 200, 4

''打印一个字符
Color 7, 1
Print "A"

Dim As UInteger char, col, fg, bg

'' get the ASCII value of the character we've刚刚印刷
char = Screen(1, 1, 0)

''获取颜色属性
col = Screen(1, 1, 1)
fg = col And &HF
bg = (col Shr 4) And &HF

Print Using "ASCII值:###(“”!“”)"; char; Chr(char)
Print Using "前景颜色:##"; fg
Print Using "背景颜色: ##"; bg
Sleep


''打开一个8位像素的图形屏幕
ScreenRes 320, 200, 8

''打印一个字符
Color 30, 16
Print "Z"

Dim As UInteger char, col, fg, bg

'' get the ASCII value of the character we've刚刚印刷
char = Screen(1, 1, 0)

''获取颜色属性
col = Screen(1, 1, 1)
fg = col And &HFF
bg = (col Shr 8) And &HFF

Print Using "ASCII值:###(“”!“”)"; char; Chr(char)
Print Using "前景颜色:###"; fg
Print Using "背景颜色: ###"; bg
Sleep


''打开全色图形屏幕
ScreenRes 320, 200, 32

''打印一个字符
Color RGB(255, 255, 0), RGB(0, 0, 255) '黄色在蓝色
Print "M"

Dim As Integer char, fg, bg

'' get the ASCII value of the character we've刚刚印刷
char = Screen(1, 1, 0)

''获取颜色属性
fg = Screen(1, 1, 1)
bg = Screen(1, 1, 2)

Print Using "ASCII值:###(“”!“”)"; char; Chr(char)
Print Using "前景颜色:&"; Hex(fg, 8)
Print Using "背景颜色:&"; Hex(bg, 8)
Sleep

平台差异

  • 在Linux版本上,返回的值可能与控制台上显示的字符不同。例如,在打印编辑文本结束之后隐含发生的不可打印的控制代码(例如LF 字符(10 ))可能会被拾取而不是它所在的人物。

与QB差别

  • 如果坐标超出屏幕,QB 屏幕触发了错误。

参考