FreeBASIC图形库问题:
FreeBASIC图形库问题
如何链接/使用Gfxlib?
Gfxlib“内置”到语言中,没有必要包含任何.bi文件或者明确链接任何库。当您使用
屏幕或
ScreenRes语句时,FreeBASIC会检测到您想要使用Gfxlib。所以要使用Gfxlib,只需启动图形屏幕模式并使用图形命令。
回到顶部
fbgfx.bi头文件怎么办?
回到顶部
Get / Put数组如何管理?
在FreeBASIC中,图像可以用作数组(如QB)或指针。无论哪种方式,图像数据都包含在一个连续的块中。该块由一个头部,后跟图像数据组成。标题可以是两种类型(旧式和新式),并确定以下图像数据的格式,详细信息请参阅GfxInternalFormats。
回到顶部
为什么Bsave / Bload崩溃?
Bsave / Bload只能用于在FreeBASIC中加载和保存图形屏幕。它不能用于保存文本模式屏幕。要加载并保存阵列,请检查此
代码段使用文件Get / Put.
回到顶部
如何获得颜色的红色,绿色,蓝色或alpha组件?
颜色属性中的每个字节对应于红色,绿色,蓝色和Alpha组件。以下示例显示如何从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
'' Assume a 16, 24, or 32 bit screen mode has been set
c = Point(x, y)
red = rgb_r(c)
green = rgb_g(c)
blue = rgb_b(c)
Alpha = rgb_a(c)
回到顶部
如何使窗口标题中的“x”按钮关闭我的应用程序?
在窗口图形模式下,您可以使用
Inkey测试窗口的X(关闭)按钮,检查值Chr(255)+“k”(也是Alt + F4返回的代码)。这适用于Win32和Linux,在DOS中没有“X”按钮。
这是一个小例子:
'' "X" close button example , Win32 and Linux only
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 or x-button
回到顶部
无法使用全屏屏幕13或14运行程序!
这是硬件/驱动程序限制(仅限Win32和Linux?)。视频卡现在不实现那些低分辨率图形模式。如果需要全屏,您应该至少使用屏幕17或18进行重写,或者分辨率为640x480或更高,以确保现代硬件能够处理。
回到顶部
为什么Imagecreate返回NULL指针?
ImageCreate需要创建一个适合当前屏幕像素格式的图像缓冲区,如果没有屏幕模式设置,则不能执行此操作,因此它返回NULL,很可能导致稍后的NULL指针访问导致程序崩溃。
当Imagecreate被调用
before 图形库被初始化为
屏幕或
ScreenRes的调用时,就会发生这种情况,这可能会在在Screen或Screenres调用之前调用的全局构造函数中调用Imagecreate时发生该计划的主要部分。在这种情况下,有必要将屏幕初始化移到构造函数中,并在图像创建构造函数之前执行它。
回到顶部
参考