通过指定水平和垂直分辨率来初始化图形模式
语法
用法
ScreenRes width , height [, [depth ] [, [num_pages ] [, [flags ] [, refresh_rate ]]]]
result = ScreenRes( width , height [, [depth ] [, [num_pages ] [, [flags ] [, refresh_rate ]]]] )
参数
width ,
height
depth
以像素为单位的颜色深度。有效的颜色深度为:
1,
2,
4,
8,
16和
32.
15和
24的值也分别作为
16和
32的别名。如果省略,默认值为每像素8位。8位及以下将提供调色板图像。默认调色板将是
Screen 13中使用的256色调色板的第一个
2 ^ depth 颜色。
num_pages
要创建的视频页数,默认为1.(见下文)
flags
用于设置屏幕的各种属性,包括全屏模式和使用的图形驱动程序。(见下面的标准标题“fbgfx.bi”可用的标志)
refresh_rate
屏幕所需的刷新率仅对全屏模式有影响,仅适用于某些系统和驱动程序。默认为适当的值,无效的刷新率将被忽略。
返回值
说明
ScreenRes告诉编译器链接GfxLib,并根据
flags 设置初始化QB-only,QB-on-GUI或OpenGL图形模式
ScreenRes清除创建的窗口或全屏。在非全屏模式下,分辨率不必与图形卡的任何分辨率相匹配。像
555x111这样的决议是可能的,GfxLib将创建一个如此大小的窗口。有关DOS问题,请参阅
GfxLib概述页面。
默认情况下,
ScreenRes模式中的字体大小设置为8x8。这可以通过使用
Width功能设置文本行/列的数量来更改。
在仅QB模式下,设置哑窗或全屏分辨率,标准内存中的一个或多个缓冲区被创建,控制台命令被重定向到其图形版本,设置
默认调色板并启动自动屏幕刷新线程。可以使用类似QB的图形和控制台语句。
在QB-on-GUI模式下,标准内存中的一个或多个缓冲区被创建,控制台命令被重定向到其图形版本,并设置一个
默认调色板.可以使用类似QB的图形和控制台语句。由用户创建一个窗口并用图形缓冲区的内容刷新它。
在OpenGL模式中,设置哑窗或全屏分辨率,标准内存中的一个或多个缓冲区被创建,并且系统的OpenGL库被初始化。从这里只能使用OpenGL命令写入图形缓冲区。QB类和控制台命令被禁止。该模式允许以便携式方式初始化OpenGL。
flags详细信息:
如果省略标志,FreeBASIC在窗口(DOS除外)模式下使用QB兼容的图形。这些常量在
fbgfx.bi中定义。在
-lang fb 方言中,这些常量是
FBNamespace的一部分。请注意,DOS中不支持大多数标志。
可用标志:
图形模式标志GFX_NULL:启动QB-on GUI图形模式。它创建一个图形缓冲区,但不是一个窗口。用户必须实现窗口,事件管理器,并根据需要刷新屏幕。此模式允许将FreeBASIC绘图功能与API驱动的窗口混合使用。或者,它允许处理图形(例如文件),而不会在屏幕上显示,即使在纯粹的控制台应用程序中。此标志覆盖所有其他模式标志。请参阅Windows中的
GFX_NULL的例子.
GFX_OPENGL:初始化OpenGL绘制一个愚蠢的窗口。FreeBASIC图形功能无法使用。屏幕不会自动更新,必须使用
Flip.此选项提供了初始化OpenGL库的便捷方式。
如果没有指定上述选项,FreeBASIC将进入仅限QB的图形模式:它创建一个缓冲区和一个哑窗口,并设置一个自动更新屏幕并管理键盘和鼠标的线程。可以使用FreeBASIC绘图功能。
窗口模式标志如果使用GFX_NULL模式,窗口模式标志是无意义的
GFX_WINDOWED:如果支持窗口模式,FreeBASIC将在当前桌面中打开所需大小的窗口
GFX_FULLSCREEN:图形卡切换模式切换到请求模式,使用颜色深度和OS全屏模式。如果本卡中的FreeBASIC模式不可用,则切换到窗口模式。
如果未指定GFX_FULLSCREEN,则假定GFX_WINDOWED的行为。
GFX_NO_SWITCH:按Alt-Enter,防止用户更改为全屏模式或窗口模式。
GFX_NO_FRAME:创建一个没有边框的窗口。
GFX_SHAPED_WINDOW:在屏幕上绘制RGBA(255,0,05,0)的地方创建透明区域。
GFX_ALWAYS_ON_TOP:创建始终保持在顶部的窗口。
选项标记标志在任何模式下工作,它们激活特殊行为
GFX_ALPHA_PRIMITIVES:告诉图形库可以为所有绘图图元启用Alpha通道支持。这意味着所有基元将始终使用颜色值(通过
RGBA宏或
&hAARRGGBB 形式的直接颜色)指定的alpha。
GFX_HIGH_PRIORITY:告诉图形库可以为图形处理启用更高的优先级。只对Win32平台上的
gdi和
DirectX驱动程序有影响。
OpenGL Buffer flags 这些标志只能在OpenGL图形模式下工作,必须与GFX_OPENGL结合使用
GFX_STENCIL_BUFFER:强制OpenGL使用模板缓冲区
GFX_ACCUMULATION_BUFFER:强制OpenGL使用累积缓冲区
GFX_MULTISAMPLE:通过ARB_multisample扩展程序请求全屏消除锯齿
根据
GFX_FULLSCREEN参数是否存在,
Screen将尝试分别以全屏或窗口模式设置指定的视频模式。如果设置了全屏模式,并且系统无法在全屏模式下设置指定模式,则会以窗口模式进行尝试。如果设置了窗口模式,并且系统无法打开指定模式的窗口,则会尝试全屏。如果一切失败,
Screen将不起作用,并且执行将从
Screen调用之后的语句恢复。您应该注意检查图形模式是否被设置,并且相应地进行操作;检查
Screen是否成功的方法是测试
ScreenPtr函数的返回值;有关详细信息,请参见其页面。
图形模式控制台控制台命令(
Locate,
Print)的输入可以同时使用标准QB
Screen模式,也可以与扩展模式一起使用,前提是标准颜色深度不会通过使用第二个参数
Screen进行修改。表格表示多种文本解析可用于文本模式时,可以使用
Width请求所需的文本解析。任何字符
Printed将擦除它们周围的背景;它不使用透明背景。
例子
'将屏幕模式设置为320 * 200,每像素8位
ScreenRes 320, 200, 8
'在整个屏幕上以对角线图案绘制色带
For y As Integer = 0 To 200-1
For x As Integer = 0 To 320-1
PSet (x,y),(x + y) And 255
Next x
Next y
' Display the text "Hello World!!" over the lines we'画在左上角
Print "你好,世界!!"
'保持窗户打开,直到用户按下一个键
Sleep
平台差异
- 在DOS,Windowing和OpenGL相关的开关不可用,其他问题,请参阅GfxLib概述
方言差异
与QB差别
参考