设置或获取内部图形库设置
语法
用法
ScreenControl( what [, [ param1 ][, [ param2 ][, [ param3 ][, [ param4 ]]]]] )
or,
ScreenControl( what [, param ] )
参数
what
指定要执行的功能
param1
可选的第一个整数参数,包含要在条目上设置的值或退出时获取的值
param2
可选的第二个整数参数,包含要在入口处设置的值或退出时获取的值
param3
可选的第三个整数参数,包含要在入口处设置的值或退出时获取的值
param4
可选的第四个整数参数,包含要在入口处设置的值或退出时获取的值
param
可选字符串参数,包含要在条目上设置的文本或退出时的文本
说明
此函数可用于设置或获取内部GfxLib状态。
what 参数指定要执行的操作。在设置状态的操作中,
param* 参数必须包含要设置的值。在获取状态的操作中,当函数返回时,
param* 将保存GfxLib返回的值。
param* 参数的含义取决于
what 参数,其可能的值在
fbgfx.bi中定义为常量。在
lang fb 中,它们被设置为存储在
FBNamespace中。
以下是支持的
what 常量的列表以及它们在写入时定义的值以及与它们相关联的参数。
支持的操作
注意:*表示通过
屏幕(图形)或
ScreenRes尚未设置图形模式时允许的操作。对于所有其他操作,返回值为零(
0)或空字符串(
"")),如果图形模式在通话时间不可用,则操作无效。
获取操作
- GET_WINDOW_POS(0)以桌面坐标返回当前窗口位置。
[OUT] param1 x
[OUT] param2 y
- * GET_WINDOW_TITLE(1)返回程序窗口的标题。
[OUT]param 标题
- GET_WINDOW_HANDLE(2)返回程序窗口的句柄。
[OUT]param1 句柄;这是Windows中的HWND,X11中是“Window”XID
- * GET_DESKTOP_SIZE(3)返回桌面大小(以像素为单位)。
[OUT]param1 宽度
[OUT]param2 身高
- GET_SCREEN_SIZE(4)返回当前屏幕大小(以像素为单位)。
[OUT]param1 宽度
[OUT]param2 高度
- GET_SCREEN_DEPTH(5)返回当前图形模式屏幕深度。
[OUT]param1 个像素
- GET_SCREEN_BPP(6)返回当前图形模式BPP。
[OUT]param1 个像素
- GET_SCREEN_PITCH(7)以字节返回当前图形模式帧缓冲区间距。
[OUT]param1 音调
- GET_SCREEN_REFRESH(8)以赫兹为单位返回当前图形模式刷新率。
[OUT]param1 率
- GET_DRIVER_NAME(9)返回当前的图形模式驱动程序名称。
[OUT]param 名称
- GET_TRANSPARENT_COLOR(10)返回当前图形模式深度的透明颜色值。
[OUT]param1 值
- GET_VIEWPORT(11)返回屏幕坐标中由视图(图形)语句设置的当前视口。
[OUT] param1 x1
[OUT] param2 y1
[OUT] param3 x2
[OUT] param4 y2
- GET_PEN_POS(12)以屏幕坐标返回最后一个图形笔位置。该位置用于使用Step关键字支持相对坐标的图形功能。
[OUT] param1 x
[OUT] param2 y
- GET_COLOR(13)返回当前的图形模式颜色。
[OUT]param1 前景
[OUT]param2 背景
- GET_ALPHA_PRIMITIVES(14)如果启用了alpha通道的原始图形支持,则返回。
-1TRUE(-1)如果启用了字母基元FALSE(0)
- GET_GL_EXTENSIONS(15)返回一个包含所有支持的GL扩展名的字符串,如果不是OpenGL模式,则返回空字符串。
[OUT]param ??支持的GL扩展
[OUT]param1 启用更高优先级的图形处理
设置操作
- SET_WINDOW_POS(100)以桌面坐标设置当前程序窗口位置。
[IN] param1 x
[IN] param2 y
- * SET_WINDOW_TITLE(101)设置当前的程序窗口标题。这相当于调用WindowTitle( param ).
[IN]param 标题
- SET_PEN_POS(102)以屏幕坐标设置当前图形笔位置。该位置用于使用Step关键字支持相对坐标的图形功能。
[IN] param1 x
[IN] param2 y
[IN]param 驱动程序名称
- SET_ALPHA_PRIMITIVES(104)设置原始图形是否应该符合alpha通道。
[IN]param1 已启用
- * SET_GL_COLOR_BITS(105)设置专用于OpenGL颜色缓冲区的位数
[IN]param1 位
- * SET_GL_COLOR_RED_BITS(106)设置专用于OpenGL颜色缓冲区的红色分量的位数
[IN]param1 位
- * SET_GL_COLOR_GREEN_BITS(107)设置专用于OpenGL颜色缓冲区的绿色分量的位数
[IN]param1 位
- * SET_GL_COLOR_BLUE_BITS(108)设置专用于OpenGL颜色缓冲区的蓝色分量的位数
[IN]param1 位
- * SET_GL_COLOR_ALPHA_BITS(109)设置专用于OpenGL颜色缓冲区的alpha分量的位数
[IN]param1 位
- * SET_GL_DEPTH_BITS(110)设置专用于OpenGL深度缓冲区的位数
[IN]param1 位
- * SET_GL_STENCIL_BITS(111)设置专用于OpenGL模板缓冲区的位数
[IN]param1 位
- * SET_GL_ACCUM_BITS(112)设置专用于OpenGL累加缓冲区的位数
[IN]param1 位
- * SET_GL_ACCUM_RED_BITS(113)设置专用于OpenGL累加缓冲区的红色分量的位数
[IN]param1 位
- * SET_GL_ACCUM_GREEN_BITS(114)设置专用于OpenGL累加缓冲区的绿色分量的位数
[IN]param1 位
- * SET_GL_ACCUM_BLUE_BITS(115)设置专用于OpenGL累加缓冲区的蓝色分量的位数
[IN]param1 位
- * SET_GL_ACCUM_ALPHA_BITS(116)设置专用于OpenGL累加缓冲区的alpha分量的位数
[IN]param1 位
- * SET_GL_NUM_SAMPLES(117)设置要用于OpenGL多重采样的样本数
[IN]param1 样本
其他操作
- POLL_EVENTS(200)导致库轮询所有事件,即检查系统事件队列,专门用于检索键盘和鼠标事件。这对于不使用Flip的OpenGL代码最有用,因为通常Flip将导致轮询这些事件。
例子
''包含一些有用的定义的fbgfx.bi
#include "fbgfx.bi"
''使用FB命名空间来轻松访问类型/常量
Using FB
Dim e As EVENT
Dim As Integer x0, y0, x, y
Dim As Integer shakes = 0
Dim As Any Ptr img
ScreenRes 320, 200, 32
Print "点击来摇动窗口"
''找到窗口坐标
ScreenControl GET_WINDOW_POS, x0, y0
Do
If (shakes > 0) Then
''做一个窗户的摇晃
If (shakes > 1) Then
''将窗口移动到其原始坐标附近的随机位置
x = x0 + Int(32 * (Rnd() - 0.5))
y = y0 + Int(32 * (Rnd() - 0.5))
ScreenControl SET_WINDOW_POS, x, y
Else
''将窗口移回其原始坐标
ScreenControl SET_WINDOW_POS, x0, y0
End If
shakes -= 1
End If
If (ScreenEvent(@e)) Then
Select Case e.type
''用户按下鼠标按钮
Case EVENT_MOUSE_BUTTON_PRESS
If (shakes = 0) Then
''设置做20摇
shakes = 20
''找到当前的窗口坐标来摇摆
ScreenControl GET_WINDOW_POS, x0, y0
End If
''用户关闭窗口或按下一个键
Case EVENT_WINDOW_CLOSE, EVENT_KEY_PRESS
''退出程序结束
Exit Do
End Select
End If
''为其他程序释放CPU
Sleep 5
Loop
''包含一些有用的定义的fbgfx.bi
#include "fbgfx.bi"
Dim As String driver
#ifdef __FB_WIN32__
''在调用ScreenRes之前将图形驱动程序设置为GDI(仅限Win32)
ScreenControl FB.SET_DRIVER_NAME, "GDI"
#endif
ScreenRes 640, 480
''获取图形驱动程序名称并将其显示给用户
ScreenControl FB.GET_DRIVER_NAME, driver
Print "图形驱动程序名称:" & driver
''在关闭窗口之前等待按键
Sleep
方言差异
- 在-lang qb 方言中不可用,除非使用别名__Screencontrol引用。
与QB差别
参考