Возвращает
ASCII код символа или атрибут цвета в
данном месте
Синтаксис
Использование
result = Screen( row, column [, colorflag ] )
Параметры
row
смещение строки на основе 1 от верхнего левого угла
консоли.
column
смещение столбца на основе 1 от верхнего левого угла
консоли.
colorflag
Если равен 0, то возвращается
ASCII
код символа, в противном случае возвращается атрибут цвета. Если этот
параметр опущен, по умолчанию 0.
Возвращаемое значение
ASCII код символа или атрибут цвета.
Описание
Screen возвращает символ или атрибут цвета, найденный в заданной
позиции вывода консоли. Это работает в консольном и в графическом режиме.
Формат атрибута цвета зависит от текущей глубины цвета:
Если тип цвета палитры до 4 бит на пиксель (например, консоль Win32), то
атрибут цвет представляет собой 8-битное значение, где старшие четыре бита
содержат цвет фона ячейки, а младшие четыре бита цвет переднего плана
(символа).
Если тип цвета палитры 8 бит на пиксель, то атрибут цвета представляет собой
16-битное значение, где старший байт имеет цвет фона , а младший байт имеет
цвет переднего плана.
Если тип цвета является полноцветным, то атрибут цвета представляет собой
32-разрядное значение типа
integer, которое
содержит значение одного цвета. Если
colorflag равен 1,
тогда возвращается цвет переднего плана; Если
colorflag
равен 2, тогда возвращается цвет фона.
Цветовые значения для стандартной 16 цветовой палитры:
значение |
цвет | значение | цвет |
0 | черный | 8 |
серый |
1 | синий | 9 | ярко-синий |
2 |
зеленый | 10 | ярко-зеленый |
3 |
голубой | 11 | ярко-голубой |
4 |
красный | 12 | ярко-красный |
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
'' Получаем значение ASCII
символа, который мы только что напечатали
char = Screen(1, 1, 0)
''получаем атрибуты цвета
col = Screen(1, 1, 1)
fg = col And &HF
bg = (col Shr 4) And &HF
Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: ##"; fg
Print Using "Background color: ##"; bg
Sleep
'' Открываем графический экран с 8-мью битами на пиксель
ScreenRes 320, 200, 8
'' печатаем символ
Color 30, 16
Print "Z"
Dim As UInteger char, col, fg, bg
'' Получаем значение ASCII символа, который мы только что
напечатали
char = Screen(1, 1, 0)
''получаем атрибуты цвета
col = Screen(1, 1, 1)
fg = col And &HFF
bg = (col Shr 8) And &HFF
Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: ###"; fg
Print Using "Background color: ###"; bg
Sleep
'' открываем полноцветный графический
экран
ScreenRes 320, 200, 32
'' печатаем символ
Color RGB(255, 255, 0), RGB(0, 0, 255) 'yellow on blue
Print "M"
Dim As Integer char, fg, bg
'' Получаем значение ASCII символа, который мы только что
напечатали
char = Screen(1, 1, 0)
''получаем атрибуты цвета
fg = Screen(1, 1, 1)
bg = Screen(1, 1, 2)
Print Using "ASCII value: ### (""!"")"; char; Chr(char)
Print Using "Foreground color: &"; Hex(fg, 8)
Print Using "Background color: &"; Hex(bg, 8)
Sleep
Различия платформ
- На версии Linux, возвращенное значение может отличаться от символа,
показанного на консоли. Например, непечатные управляющие коды - такие как LF
символ (10) , которые косвенно находятся после конца Print(напечатанного)
текста - могут быть взяты вместо нетронутого символа на своем месте.
Отличия от QB
- В QB Screen создает ошибку, если координаты были вне
экрана.
См. также