使用类似QB的模式编号初始化图形模式
语法
-lang fb|fblite 方言:
Screen mode [, [ depth ] [, [ num_pages ] [, [ flags ] [, [ refresh_rate ]]]]]
Screen , [ active_page ] [, [ visible_page ]]
-lang qb 方言:
Screen [ mode ] [, [ colormode ] [, [ active_page ] [, [ visible_page ]]]]
参数
mode
是一个QB风格的图形屏幕模式号码(见下文)。如果mode 为0,那么任何当前设置的图形模式都将关闭,所有功能恢复正常的控制台模式功能。有关可用模式,请参见下文。
depth
是以像素为单位的颜色深度。这仅对模式14及更高版本有效。允许8,16和32的值。15和24也分别被允许作为16和32的别名。如果省略,则默认为8.
num_pages
是您想要的视频页数,见下文。如果省略,则默认为1.
flags
用于选择几件事情作为图形驱动程序,全屏模式。在
fbgfx.bi文件中预定义的常量可以使用。有关可用的标志,请参阅页面
ScreenRes.
refresh_rate
请求刷新率。如果本卡不可用,或者省略参数,则FreeBASIC将自动选择该速率。
active_page
用于设置打印/绘图命令生效的活动页面
visible_page
用于设置可见页面,显示给用户
colormode
未使用 - 允许与QB语法兼容
说明
Screen告诉编译器链接GfxLib,并根据
flags 设置初始化QB-only,QB-on-GUI或OpenGL图形模式。
在仅QB模式下,设置哑窗或全屏分辨率,标准内存中的一个或多个缓冲区被创建,控制台命令被重定向到其图形版本,设置
默认调色板并启动自动屏幕刷新线程。可以使用类似QB的图形和控制台语句。
在QB-on-GUI模式下,标准内存中的一个或多个缓冲区被创建,控制台命令被重定向到其图形版本,并设置
默认调色板.可以使用类似QB的图形和控制台语句。由用户创建一个窗口并用图形缓冲区的内容刷新它。
在OpenGL模式中,设置了一个哑窗口或全屏分辨率,标准内存中的一个或多个缓冲区被创建,并且操作系统的OpenGL库被初始化。从这里只能使用OpenGL命令; QB类和控制台命令被禁止。这允许以便携式方式初始化OpenGL;然后,您可以使用
ScreenControl在
Screen调用之前正确自定义要使用的GL像素格式,或者在设置了模式后检索支持的OpenGL扩展列表,并
ScreenGLProc以获取扩展函数指针。
在标准存储器中创建的任何缓冲区使用三种支持的内部像素格式之一,具体取决于所需的颜色深度;详见
内部像素格式.
如果
Screen无法设置所需模式,将发出“非法函数调用”错误,屏幕指针设置为
0.因此
Screen可以使用标准
On Error处理或使用
ScreenPtr检索屏幕指针来检测故障。
在设置全屏模式之前,程序应使用
ScreenList检查图形卡中是否有该模式。
模式详情可用模式列表:
QB兼容模式:
时尚NR | 解析度 | 仿真 | 文本 | 字符大小 | 屏幕上的颜色 |
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 0r 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模式:
时尚NR | 解析度 | 仿真 | 文本 | 字符大小 | 屏幕上的颜色 |
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及以上,深度参数将颜色深度更改为指定的新颜色深度;如果未指定深度,则这些模式以8bpp运行。对于
13及以下模式,
depth 无效。
num_pages详情您可以为任何视频模式请求任意数量的页面;如果省略参数,则只有可见页面(数字
0)将可用。页面是可见屏幕或屏幕外缓冲区,您可以在另一个页面上显示页面;有关详细信息,请参阅
ScreenSet语句。所有页面都是在标准内存中创建的,视频卡存储器从不用于视频缓冲。
flags详细信息:(记载在页面
ScreenRes)
其他详情在窗口模式下,点击窗口关闭按钮将向
Inkey缓冲区添加一个按键
(Chr(255) & "k").如果可能,点击最大化窗口按钮将切换到全屏模式。一个成功的
Screen调用将当前可见的和工作页面设置为页码
0,将调色板重置为指定的模式(参见
默认调色板),将裁剪区域重置为屏幕大小,禁用自定义坐标映射将图形光标移动到屏幕中央,将文本光标移动到屏幕的左上角,并将前景色和背景颜色分别设置为明亮的白色和黑色。
例子
'设置屏幕模式13(320 * 200,8bpp)
Screen 13
Print "屏幕模式13设置"
Sleep
#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB ''lang FB中的FB命名空间中的屏幕模式标志
#endif
'在窗口模式下设置屏幕模式18(640 * 480),32bpp色深和4页,切换禁用
Screen 18, 32, 4, (GFX_WINDOWED Or GFX_NO_SWITCH)
'检查以确保屏幕已成功打开
If ScreenPtr = 0 Then
Print "错误设置视频模式!"
End
End If
Print "成功设置视频模式"
Sleep
平台差异
- 在DOS,Windowing和OpenGL相关的开关不可用,其他问题,请参阅GfxLib概述
方言差异
屏幕 mode [, [depth ] [, [num_pages ] [, [flags ] [, [refresh_rate ]]]]]
or:
屏幕 , [active_page ] [, [visible_page ]]]
屏幕 [mode ] [, [colormode] [, [active_page ] [, [visible_page ]]]]
与QB差别
参考