Screen (图形)
 
使用类似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及更高版本有效。允许81632的值。1524也分别被允许作为1632的别名。如果省略,则默认为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;然后,您可以使用ScreenControlScreen调用之前正确自定义要使用的GL像素格式,或者在设置了模式后检索支持的OpenGL扩展列表,并ScreenGLProc以获取扩展函数指针。

在标准存储器中创建的任何缓冲区使用三种支持的内部像素格式之一,具体取决于所需的颜色深度;详见内部像素格式.

如果Screen无法设置所需模式,将发出“非法函数调用”错误,屏幕指针设置为0.因此Screen可以使用标准On Error处理或使用ScreenPtr检索屏幕指针来检测故障。

在设置全屏模式之前,程序应使用ScreenList检查图形卡中是否有该模式。

模式详情
可用模式列表:
QB兼容模式:
时尚NR解析度仿真文本字符大小屏幕上的颜色
1320x200CGA40X258x816个背景,四个前台中的1个
2640x200CGA80x258x816种颜色到2种属性
7320x200EGA40x258x816色到16属性
8640x200EGA80x258x816色到16属性
9640x350EGA80x25 0r 80x438x14或8x816色到16属性
11640x480VGA80x30或80x608x16或8x8256K颜色为2属性
12640x480VGA80x30或80x608x16或8x8256K颜色为16属性
13320x200MCGA40X258X8256K颜色为256属性

新FreeBASIC模式:
时尚NR解析度仿真文本字符大小屏幕上的颜色
14320x240 40x308x8256K颜色为256属性或直接颜色
15400x300 50x378x8256K颜色为256属性或直接颜色
16512x384 64x24或64x488x16或8x8256K颜色为256属性或直接颜色
17640x400 80x25或80x508x16或8x8256K颜色为256属性或直接颜色
18640x480 80x30或80x608x16或8x8256K颜色为256属性或直接颜色
19800x600 100x37或100x758x16或8x8256K颜色为256属性或直接颜色
201024x768 128x48或128x968x16或8x8256K颜色为256属性或直接颜色
211280x1024 160x64或160x1288x16或8x8256K颜色为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 ]]]

  • -lang qb 方言中,用法如下:
屏幕 [mode ] [, [colormode] [, [active_page ] [, [visible_page ]]]]

与QB差别

  • -lang qb 方言。
  • 在QB中,语法为屏幕mode colormode active_page visible_page .在这些参数中,FreeBASIC仅支持mode ,并重新定义其余部分。使用屏幕,,apage,vpage 切换屏幕页面仅在-lang qb 方言中可用。
  • ScreenSet应在-lang fb -lang fblite 方言中使用。

参考