mode
Это графический QB-стиль с
номером режима экрана (см. ниже). Если mode равен 0,
тогда графический режим закрыт, и все функции работают в режиме консоли.
Ниже приведены доступные режимы.
depth
Это глубина цвета в битах на пиксель. Это влияет только
для режимов 14 и выше. Допускаются значения 8, 16 и 32. Также разрешены 15 и
24 как псевдонимы для 16 и 32, соответственно. Если этот параметр опущен, по
умолчанию 8.
num_pages
Количество желаемых видеостраниц, смотрите ниже. Если
этот параметр опущен, по умолчанию 1.
flags
Используются для выбора нескольких возможностей, таких
как графический драйвер, полноэкранный режим. Есть константы,
предопределенные в файле fbgfx.bi и готовые к использованию. Ниже
приведены доступные флаги.
refresh_rate
запрашивает частоту обновления. Если она не доступна в
видеокарте или параметр опущен, FreeBASIC автоматически выбирает частоту.
active_page
Используется для установки активной страницы, когда
команды печати/рисования вступают в силу
visible_page
Используется для установки видимой страницы, которая
показывается пользователю
colormode
Не используется - разрешен для совместимости с
синтаксисом QB
Screen сообщает компилятору слинковать GfxLib и
инициализировать режим QB-only, QB-on-GUI или OpenGL графику, в зависимости
от настроек
flags
В режимах QB-only устанавливается разрешение окна или полноэкранная
установка, один или несколько буферов в стандартной памяти создаются,
консольные команды перенаправляются на их графические версии, a
палитра по умолчанию устанавливается и
автоматический поток обновления экрана запускается. QB-подобная графика и
консольные конструкции могут использоваться.
В режимах QB-on-GUI один или несколько буферов в стандартной памяти
создаются, консольные команды перенаправляются на их графические версии, a
палитра по умолчанию устанавливается.
QB-подобная графика и консольные операторы могут использоваться. Зависит от
пользователя создание окна и обновления его содержимого буферов
графики.
В режимах OpenGL, разрешение окна или весь экран устанавливается, один
или нескольких буферов в стандартной памяти создаются, и инициализируется
система библиотеки OpenGL. Здесь только OpenGL команды могут использоваться
для записи в графический буфер. QB-подобные и консольные команды запрещены.
Этот режим позволяет инициализацию OpenGL в портабельном виде; вы можете
также использовать
ScreenControl
чтобы должным образом настроить формат GL пикселя перед вызовом
Screen
или получить список поддерживаемых расширений OpenGL после установки режима,
и также использовать
ScreenGLProc
для получения указателей на функции расширения.
Любой буфер, который создается в стандартной памяти, использует один из трех
поддерживаемых внутренних форматов пикселя, в зависимости от требуемой
глубины цвета; смотрите
Внутренние
пиксельные форматы для детальной информации.
Если
Screen не может установить необходимый режим, то
выдается ошибка "Illegal function call", и указатель экрана установливается
в 0. Таким образом ошибки
Screen могут быть обнаружены с
помощью стандартной обработки
On Error
или извлечения указателя экрана с помощью
ScreenPtr.
Прежде чем устанавливать полноэкранный режим, желательно проверить, доступен
ли такой режим в графической карте с помощью
ScreenList.
Подробная информация о режиме
Список доступных режимов:
Режимы совместимости QB:
Номер режима | Разрешение |
Эмуляция | Текст | Размер символа | Цвета на экране |
1 | 320x200 | CGA | 40X25 | 8x8 |
16 фоновых, 1 из четырех комплектов на переднем плане |
2 | 640x200 | CGA | 80x25 | 8x8 |
16 цветов 2 атрибута |
7 | 320x200 | EGA | 40x25 | 8x8 |
16 цветов 16 атрибутов |
8 | 640x200 | EGA | 80x25 | 8x8 |
16 цветов 16 атрибутов |
9 | 640x350 | EGA | 80x25
или 80x43 | 8x14 или 8x8 | 16 цветов 16 атрибутов |
11 | 640x480 | VGA | 80x30
или 80x60 | 8x16 или 8x8 | 256K цветов
2 атрибута |
12 | 640x480 | VGA | 80x30
или 80x60 | 8x16 или 8x8 | 256K цветов
16 атрибутов |
13 | 320x200 | MCGA | 40X25 | 8X8 | 256K
цветов 256 атрибутов |
Новые FreeBASIC режимы:
Номер режима | Разрешение |
Эмуляция | Текст | Размер символа | Цвета на экране |
14 | 320x240 |
| 40x30 | 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
15 | 400x300 | | 50x37 | 8x8 |
256K цветов 256 атрибутов или непосредственный
цвет |
16 | 512x384 | | 64x24 или 64x48 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
17 | 640x400 | | 80x25 или 80x50 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
18 | 640x480 | | 80x30 или 80x60 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
19 | 800x600 | | 100x37 или 100x75 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
20 | 1024x768 | | 128x48 или 128x96 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
21 | 1280x1024 | | 160x64 или 160x128 | 8x16
или 8x8 | 256K цветов 256 атрибутов или непосредственный
цвет |
depth детали
Для режимов
14 и выше, параметр depth изменяет глубину цвета на
указанный новый; Если depth не указан, режим запускается с 8bpp. Для режимов
13
и ниже,
depth не имеет эффекта.
num_pages детали
Вы можете заказать любое количество страниц для любых видеорежимов; Если
опустить этот параметр, будет доступна только видимая страница (номер 0).
Видимая страница является видимой для пользователя частью, вы можете
показывать эту страницу во время работы над другой; см. оператор
ScreenSet
для подробностей. Все страницы создаются в стандартной памяти, память
видеокарты никогда не используется для буферизации видео.
flags детали:
Если флаги опущены, FreeBASIC использует QB-совместимый графический оконный
(за исключением DOS) режим. Эти константы определены в
fbgfx.bi. В
диалекте
-lang fb, эти константы
являются частью
FB Namespace.
Обратите внимание, что большинство флагов не поддерживаются в DOS.
Доступные флаги:
Флаги графического режима
GFX_NULL: запускает QB-on-GUI графический режим.
Это создает графический буфер без окна. Пользователь должен реализовывать
окно, менеджер событий и обновление экрана при необходимости. Этот режим
позволяет смешивать FreeBASIC функций рисования с управляемыми
Windows API. Этот флаг переопределяет все другие
флаги режима. См.
Пример GFX_NULL в Windows.
GFX_OPENGL: Инициализирует OpenGL для рисования в окне. Нельзя
использовать FreeBASIC графические функции. Экран не обновляется
автоматически, для этого должен использоваться
Flip.
Этот параметр обеспечивает портативный способ инициализации библиотеки
OpenGL.
Если ни один из вышеперечисленных флагов не указан, FreeBASIC входит в режим
QB графики: это создает буфер окно и задает поток, который автоматически
обновляет экран и управляет клавиатурой и мышью. Могут использоваться
FreeBASIC функции рисования.
Флаги оконного режима
Флаги оконного режима флаги бессмысленны если режим GFX_NULL
используется
GFX_WINDOWED: Если оконный режим поддерживается, FreeBASIC открывает
окно требуемого размера на рабочем столе
GFX_FULLSCREEN: Режим переключения видеокарты переключает на требуемый
режим , глубину цвета и устанавливается ОС полноэкранный режим. Если режим
не доступен , FreeBASIC переключает на оконный режим.
Если GFX_FULLSCREEN не указывается, поведение предполагает режим GFX_WINDOWED.
GFX_NO_SWITCH: Предотвращает изменение пользователем полноэкранного
режима в оконный режим и обратно, посредством Alt-Enter.
GFX_NO_FRAME: Создает окно без бордюра.
GFX_SHAPED_WINDOW: Создает прозрачные области, где RGBA(255, 0, 255, 0)
рисуется на экране.
GFX_ALWAYS_ON_TOP: Создает окно, которое остается всегда сверху.
флаги параметров
Флаги, работающие в любом режиме, они активируют
специальные поведения
GFX_ALPHA_PRIMITIVES: Сообщает графической библиотеке, что включается
поддержка альфа канала для всех примитивов при их рисовании. Это означает,
что альфа указанное в значении цвета (либо через
RGBA
макрос , либо через прямое указание цвета в виде
&hAARRGGBB)
всегда будет использоваться всеми примитивами.
GFX_HIGH_PRIORITY: Сообщает графической библиотеке более высокий
приоритет для обработки графики. Влияет только на
gdi и
DirectX
драйверы на платформе Win32.
Флаги OpenGL буфера
Эти флаги работают только в режиме OpenGL графики, и
должны сочетаться с флагом GFX_OPENGL
GFX_STENCIL_BUFFER: Задает системе OpenGL использование шаблонов буфера
GFX_ACCUMULATION_BUFFER: Задает системе OpenGL использование накопления
буфера
GFX_MULTISAMPLE: Запрашивает полноэкранное сглаживание через расширение
ARB_multisample
В зависимости от того присутствует или нет параметр
GFX_FULLSCREEN,
Screen
будет пытаться установить указанный видеорежим в полноэкранном или оконном
режиме, соответственно. Если задать полноэкранный режим и система не может
его установить,
freebasic будет стараться создать
оконный режим. Если включен оконный режим и системе не удается открыть окно
для указанного режима,
freebasic будет стараться
переключиться в полноэкранный режим. Если все попытки неудачны,
Screen
не будет иметь никакого эффекта и выполнение продолжится со следующего
оператора после вызова
Screen. Вы должны заботиться о
проверке установки графического режима и программа должна вести себя
соответственно; один из способов проверить успешность установки
Screen
является проверка возвращаемого значения функции
ScreenPtr;
подробности на ее странице.
Графический режим консоли
Консольные команды (
Locate,
Print)
;
входные данные могут быть использованы как со стандартным режимом QB
Screen
так и с расширенным тоже же, при условии, что глубина стандартного цвета не
изменяется с помощью второго аргумента
Screen. Там , где в
таблице указано более чем одно разрешение в колонке "текст" доступного для
текстового режима, требуемое разрешение текста может быть запрошено с
помощью
Width. Любые символы
Print(при
печати) будут стирать фон вокруг них; то есть не используется прозрачный
фон.
Другие детали
В оконном режиме, нажав на кнопку закрытия окна будет добавлено нажатие
клавиши
Chr(255)&"k" в буфер
Inkey.
Нажав на кнопку развернуть окно , будет переключение в полноэкранный режим,
если это возможно. Успешный вызов
Screen задает видимую и
рабочую страницы к странице с номером 0, сбрасывает палитры в указанный
режим (см. палитры по умолчанию), сбрасывает выделенную область до размеров
экрана, отключает сопоставления пользовательских координат, перемещает
курсор к центру экрана, перемещает текстовый курсор в левый верхний угол
экрана и соответственно устанавливает основной и фоновый цвета до
ярко-белого и черного.
См. также