Вопросы о графической библиотеке FreeBASIC:
Вопросы о графической библиотеке FreeBASIC
Как линковать/использовать Gfxlib?
Gfxlib "встроена" в язык, не требуется никаких включаемых
.bi файлов. FreeBASIC автоматически определяет использование Gfxlib , когда
вы вызываете функцию
Screen или
ScreenRes.
Таким образом, для того чтобы использовать Gfxlib графические команды, вам
просто нужно инициализировать экран.
К началу страницы
Что можно сказать о заголовочном файле fbgfx.bi?
Файл заголовка
fbgfx.bi доступен для включения
по вашей программе, и содержит константы и определения типов, которые могут
оказаться полезными для вас при использовании Gfxlib. Совсем не обязательно
подключать его для того, чтобы использовать Gfxlib; заголовок доступен
только в качестве вспомогательного средства. Он содержит константы флагов,
которые могут передаваться в
Screen и
ScreenRes,
а также определения
Клавиатурных сканкодов и
структуру fb.Image
буфера.
К началу страницы
Как управлять массивами с помощью Get/Put?
В FreeBASIC, изображения могут использоваться как массивы
(как, например, в QB) или управляться при помощи указателей. В то же время,
данные изображений, находятся в одном блоке. Блок состоит из заголовка
данных изображения. Заголовок может быть двух видов (старый стиль и новый
стиль). Он определяет формат данных изображений, для получения более
подробной информации см. GfxInternalFormats.
К началу страницы
Почему при использовании функций Bsave/Bload программа
вылетает?
Bsave/Bload могут быть использованы только для загрузки и
сохранения графических экранов и графических буферов в FreeBASIC. Они не
могут быть использованы для сохранения экрана в текстовом режиме. Чтобы
загрузить и сохранить массивы читайте
подсказку для использования файловых Get/Put .
К началу страницы
Можно ли получить красный, зеленый, синий, или альфа
компонент цвета?
Каждый байт в атрибуте цвета содержит красный, зеленый,
синий и альфа компоненты. В следующем примере показано, как извлечь
составные значения из 16, 24 или 32 битного атрибута цвета.
#define rgb_a(x) ((x) Shr 24)
#define rgb_r(x) ((x) Shr 16 And 255)
#define rgb_g(x) ((x) Shr 8 And 255)
#define rgb_b(x) ((x) And 255)
Dim As UInteger c
Dim As Integer x, y
Dim As UByte red, green, blue, Alpha
'' Предполагается, что ранее в коде вы установили 16 , 24
или 32 битный режим экрана
c = Point(x, y)
red = rgb_r(c)
green = rgb_g(c)
blue = rgb_b(c)
Alpha = rgb_a(c)
К началу страницы
Как получить событие клика по кнопке "x" в заголовке окна
для закрытия приложения?
В оконном режиме графики вы можете вы можете проверить
нажата ли кнопка Х (закрыть) в заголовке окна при помощи функции
Inkey,
сравнив результат функции со значением Chr( 255 ) + "k" (по сути это тоже,
что и Alt+F4). Это относится к платформам Win32 и Linux. Что касается DOS
,
то там нет кнопки "X" в заголовке окна.
Маленький пример:
'' Пример закрытия окна по нажатию "X" кнопки , Win32 и Linux только
Dim As String key
Screen 13
Do
Print "Click the 'x' to close this app."
Sleep
key = Inkey
Loop Until key = Chr(27) Or key = Chr(255, 107) 'escape или x-кнопка
в заголовке окна
К началу страницы
Почему не получается запускать Screen 13 или 14 в
полноэкранном режиме?
Это - ограничение аппаратных средств/драйвера (Win32 и
Linux только?). В наше время видеокарты не осуществляют такие способы для
графики с низким разрешением. Если требуется полный экран, вы должны
переписать инициализацию экрана, по крайней мере с режимом 17 или 18 или
разрешением 640x480 и выше для того, чтобы современные аппаратные средства
смогли обращаться с ним.
К началу страницы
Почему Imagecreate возвращает "ПУСТОЙ" указатель?
ImageCreate создает
буфер изображения, который соответствует пиксельному формату текущего
экрана, и он не может создать его, если еще не установлен один из режимов
экрана с помощью
Screen или
ScreenRes.
В результате функция возвращает
нулевой (пустой) указатель, при обращении к которому программа по понятным
причинам вылетает.
Как итог, вам попросту нужно вызвать функцию
Screen
или
ScreenRes для использования
ImageCreate.
К началу страницы
См. также