论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
作者 【1】 的文章
2026-3-5
SDL3_API分类参考_显示器与窗口管理(CategoryVideo)
显示器与窗口管理(CategoryVideo) SDL 的视频子系统主要负责对底层操作系统的窗口管理进行抽象封装。你可以创建窗口、以多种方式管理窗口、将其设为全屏模式,并在窗口发生相关事件(如鼠标或键盘与窗口交互)时获取事件通知。 视频子系统还会对 OpenGL 中部分平台相关的差异进行抽象,例如:上下文创建、缓冲区交换等。这对你的应用程序可能至关重要,但你完全不必强制使用 OpenGL。事实上,SDL 也可以为这些窗口提供渲染能力:既可以使用易用的 2D API,也可以使用功能更强大的 GPU API。 当然,SDL 也可以完全不介入渲染流程,直接为你提供窗口句柄,让你自行直接使用 Vulkan、Direct3D、Metal 或其他任何你喜欢的图形 API。 视频子系统因功能需求覆盖范围很广,因此值得浏览一遍函数列表以了解可用功能。不过大多数应用只需创建窗口并监听事件即可,建议从 SDL_CreateWindow() 和 SDL_PollEvent() 开始使用。 函数 SDL_CreatePopupWindow(创建弹出窗口) SDL_CreateWindow(创建窗口) SDL_CreateWindowWithProperties(按属性创建窗口) SDL_DestroyWindow(销毁窗口) SDL_DestroyWindowSurface(销毁窗口表面) SDL_DisableScreenSaver(禁用屏幕保护程序) SDL_EGL_GetCurrentConfig(获取当前 EGL 配置) SDL_EGL_GetCurrentDisplay(获取当前 EGL 显示) SDL_EGL_GetProcAddress(获取 EGL 函数地址) SDL_EGL_GetWindowSurface(获取 EGL 窗口表面) SDL_EGL_SetAttributeCallbacks(设置 EGL 属性回调) SDL_EnableScreenSaver(启用屏幕保护程序) SDL_FlashWindow(闪烁窗口) SDL_GetClosestFullscreenDisplayMode(获取最接近的全屏显示模式) SDL_GetCurrentDisplayMode(获取当前显示模式) SDL_GetCurrentDisplayOrientation(获取当前显示方向) SDL_GetCurrentVideoDriver(获取当前视频驱动) SDL_GetDesktopDisplayMode(获取桌面显示模式) SDL_GetDisplayBounds(获取显示器边界) SDL_GetDisplayContentScale(获取显示内容缩放比例) SDL_GetDisplayForPoint(获取点所在的显示器) SDL_GetDisplayForRect(获取矩形所在的显示器) SDL_GetDisplayForWindow(获取窗口所在的显示器) SDL_GetDisplayName(获取显示器名称) SDL_GetDisplayProperties(获取显示器属性) SDL_GetDisplays(获取所有显示器) SDL_GetDisplayUsableBounds(获取显示器可用区域边界) SDL_GetFullscreenDisplayModes(获取所有全屏显示模式) SDL_GetGrabbedWindow(获取捕获输入的窗口) SDL_GetNaturalDisplayOrientation(获取显示器自然方向) SDL_GetNumVideoDrivers(获取视频驱动数量) SDL_GetPrimaryDisplay(获取主显示器) SDL_GetSystemTheme(获取系统主题) SDL_GetVideoDriver(获取指定序号的视频驱动) SDL_GetWindowAspectRatio(获取窗口宽高比) SDL_GetWindowBordersSize(获取窗口边框大小) SDL_GetWindowDisplayScale(获取窗口所在显示器缩放) SDL_GetWindowFlags(获取窗口标志) SDL_GetWindowFromID(通过 ID 获取窗口) SDL_GetWindowFullscreenMode(获取窗口全屏模式) SDL_GetWindowICCProfile(获取窗口 ICC 色彩配置文件) SDL_GetWindowID(获取窗口 ID) SDL_GetWindowKeyboardGrab(获取窗口键盘捕获状态) SDL_GetWindowMaximumSize(获取窗口最大尺寸) SDL_GetWindowMinimumSize(获取窗口最小尺寸) SDL_GetWindowMouseGrab(获取窗口鼠标捕获状态) SDL_GetWindowMouseRect(获取窗口鼠标限制矩形) SDL_GetWindowOpacity(获取窗口不透明度) SDL_GetWindowParent(获取父窗口) SDL_GetWindowPixelDensity(获取窗口像素密度) SDL_GetWindowPixelFormat(获取窗口像素格式) SDL_GetWindowPosition(获取窗口位置) SDL_GetWindowProgressState(获取窗口进度条状态) SDL_GetWindowProgressValue(获取窗口进度条值) SDL_GetWindowProperties(获取窗口属性) SDL_GetWindows(获取所有窗口) SDL_GetWindowSafeArea(获取窗口安全区域) SDL_GetWindowSize(获取窗口大小) SDL_GetWindowSizeInPixels(获取窗口像素大小) SDL_GetWindowSurface(获取窗口表面) SDL_GetWindowSurfaceVSync(获取窗口表面垂直同步状态) SDL_GetWindowTitle(获取窗口标题) SDL_GL_CreateContext(创建 OpenGL 上下文) SDL_GL_DestroyContext(销毁 OpenGL 上下文) SDL_GL_ExtensionSupported(检查 OpenGL 扩展是否支持) SDL_GL_GetAttribute(获取 OpenGL 属性) SDL_GL_GetCurrentContext(获取当前 OpenGL 上下文) SDL_GL_GetCurrentWindow(获取当前 OpenGL 上下文所属窗口) SDL_GL_GetProcAddress(获取 OpenGL 函数地址) SDL_GL_GetSwapInterval(获取 OpenGL 交换间隔) SDL_GL_LoadLibrary(加载 OpenGL 库) SDL_GL_MakeCurrent(将上下文设为当前) SDL_GL_ResetAttributes(重置 OpenGL 属性) SDL_GL_SetAttribute(设置 OpenGL 属性) SDL_GL_SetSwapInterval(设置 OpenGL 交换间隔) SDL_GL_SwapWindow(交换 OpenGL 窗口缓冲区) SDL_GL_UnloadLibrary(卸载 OpenGL 库) SDL_HideWindow(隐藏窗口) SDL_MaximizeWindow(最大化窗口) SDL_MinimizeWindow(最小化窗口) SDL_RaiseWindow(激活并前置窗口) SDL_RestoreWindow(恢复窗口) SDL_ScreenSaverEnabled(查询屏幕保护是否启用) SDL_SetWindowAlwaysOnTop(设置窗口置顶) SDL_SetWindowAspectRatio(设置窗口宽高比) SDL_SetWindowBordered(设置窗口是否有边框) SDL_SetWindowFillDocument(设置窗口填充文档模式) SDL_SetWindowFocusable(设置窗口是否可获得焦点) SDL_SetWindowFullscreen(设置窗口全屏) SDL_SetWindowFullscreenMode(设置窗口全屏模式) SDL_SetWindowHitTest(设置窗口点击测试回调) SDL_SetWindowIcon(设置窗口图标) SDL_SetWindowKeyboardGrab(设置窗口键盘捕获) SDL_SetWindowMaximumSize(设置窗口最大尺寸) SDL_SetWindowMinimumSize(设置窗口最小尺寸) SDL_SetWindowModal(设置窗口为模态) SDL_SetWindowMouseGrab(设置窗口鼠标捕获) SDL_SetWindowMouseRect(设置窗口鼠标限制矩形) SDL_SetWindowOpacity(设置窗口不透明度) SDL_SetWindowParent(设置父窗口) SDL_SetWindowPosition(设置窗口位置) SDL_SetWindowProgressState(设置窗口进度条状态) SDL_SetWindowProgressValue(设置窗口进度条值) SDL_SetWindowResizable(设置窗口是否可缩放) SDL_SetWindowShape(设置窗口透明形状) SDL_SetWindowSize(设置窗口大小) SDL_SetWindowSurfaceVSync(设置窗口表面垂直同步) SDL_SetWindowTitle(设置窗口标题) SDL_ShowWindow(显示窗口) SDL_ShowWindowSystemMenu(显示窗口系统菜单) SDL_SyncWindow(同步窗口状态) SDL_UpdateWindowSurface(更新窗口表面) SDL_UpdateWindowSurfaceRects(批量更新窗口表面区域) SDL_WindowHasSurface(检查窗口是否有表面) 数据类型 SDL_DisplayID(显示器 ID) SDL_DisplayModeData(显示模式数据) SDL_EGLAttrib(EGL 属性) SDL_EGLAttribArrayCallback(EGL 属性数组回调) SDL_EGLConfig(EGL 配置) SDL_EGLDisplay(EGL 显示) SDL_EGLint(EGL 整数类型) SDL_EGLIntArrayCallback(EGL 整数数组回调) SDL_EGLSurface(EGL 表面) SDL_GLContext(OpenGL 上下文) SDL_GLContextFlag(OpenGL 上下文标志) SDL_GLContextReleaseFlag(OpenGL 上下文释放标志) SDL_GLContextResetNotification(OpenGL 上下文重置通知) SDL_GLProfile(OpenGL 配置文件) SDL_HitTest(点击测试回调) SDL_Window(窗口) SDL_WindowFlags(窗口标志) SDL_WindowID(窗口 ID) 结构体 SDL_DisplayMode(显示模式) 枚举 SDL_DisplayOrientation(显示器方向) SDL_FlashOperation(窗口闪烁操作) SDL_GLAttr(OpenGL 属性) SDL_HitTestResult(点击测试结果) SDL_ProgressState(进度条状态) SDL_SystemTheme(系统主题) 宏 SDL_PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER(Wayland 显示指针全局属性) SDL_WINDOWPOS_CENTERED(窗口位置居中) SDL_WINDOWPOS_CENTERED_DISPLAY(指定显示器窗口居中) SDL_WINDOWPOS_CENTERED_MASK(窗口居中掩码) SDL_WINDOWPOS_ISCENTERED(判断窗口是否居中) SDL_WINDOWPOS_ISUNDEFINED(判断窗口位置是否未定义) SDL_WINDOWPOS_UNDEFINED(窗口位置未定义) SDL_WINDOWPOS_UNDEFINED_DISPLAY(指定显示器窗口位置未定义) SDL_WINDOWPOS_UNDEFINED_MASK(窗口位置未定义掩码) [API 分类首页(CategoryAPICategory)]
2026年-3月-5日
15 阅读
0 评论
VisualFreeBasic编程文档
2026-3-5
SDL3 API分类参考(FreeBASIC适配版)
说明 本文档基于SDL 3.0官方API分类翻译,并适配FreeBASIC开发环境 SDL 3.0 API 分类一览 基础功能 分类 头文件 说明 应用程序入口 SDL_main.h 提供SDL应用程序的标准入口点,处理不同平台下的程序启动逻辑 初始化与退出 SDL_init.h 负责SDL库的初始化、子系统启动和程序退出时的资源清理 配置变量 SDL_hints.h 提供运行时可配置的全局参数,用于调整SDL的行为和特性 对象属性 SDL_properties.h 为SDL对象提供键值对形式的属性管理能力,支持动态设置和查询属性 错误处理 SDL_error.h 定义SDL的错误码和错误消息管理函数,用于捕获和报告运行时错误 日志处理 SDL_log.h 提供分级日志输出功能,支持不同级别(调试、信息、警告、错误)的日志打印 断言 SDL_assert.h 实现调试断言功能,用于在开发阶段检查程序逻辑的正确性 查询SDL版本 SDL_version.h 提供获取SDL库版本信息的函数,包括主版本、次版本和修订号 视频 分类 头文件 说明 显示器与窗口管理 SDL_video.h 管理显示器、窗口的创建与控制,处理显示模式和屏幕分辨率 2D加速渲染 SDL_render.h 提供硬件加速的2D渲染接口,支持纹理、渲染器和基本图形绘制 像素格式与转换函数 SDL_pixels.h 定义像素格式类型,提供像素格式转换和颜色值处理函数 混合模式 SDL_blendmode.h 定义渲染时的颜色混合模式,控制图形叠加时的颜色计算方式 矩形函数 SDL_rect.h 提供矩形数据结构和相关操作函数,如矩形创建、交集、合并等 表面创建与简单绘制 SDL_surface.h 管理软件渲染的像素表面,支持基本的像素级绘制操作 剪贴板处理 SDL_clipboard.h 提供系统剪贴板的读写功能,支持文本数据的复制粘贴 Vulkan 支持 SDL_vulkan.h 集成Vulkan图形API,提供SDL窗口与Vulkan上下文的交互能力 Metal 支持 SDL_metal.h 集成Apple Metal图形API,支持在macOS/iOS上的硬件加速渲染 摄像头支持 SDL_camera.h 管理设备摄像头的访问和视频流捕获,支持摄像头参数配置 输入事件 分类 头文件 说明 事件处理 SDL_events.h 核心事件管理系统,处理事件队列、事件分发和事件过滤 键盘支持 SDL_keyboard.h 管理键盘设备状态,检测按键按下/释放事件,获取键盘布局信息 键盘键值 SDL_keycode.h 定义与字符相关的键盘键值(Keycode),与具体键盘布局无关 键盘扫描码 SDL_scancode.h 定义与物理按键位置相关的扫描码(Scancode),跨平台统一标识 鼠标支持 SDL_mouse.h 管理鼠标设备,处理鼠标移动、点击、滚轮事件,控制鼠标光标 操纵杆支持 SDL_joystick.h 支持传统操纵杆设备,处理轴、按钮、帽子开关等输入事件 游戏手柄支持 SDL_gamepad.h 针对标准化游戏手柄的高级接口,简化常见游戏控制器的使用 触摸支持 SDL_touch.h 管理触摸设备和触摸点,处理单点/多点触摸事件 手写笔支持 SDL_pen.h 支持手写笔/压感笔设备,处理笔尖位置、压力、倾斜等参数 传感器 SDL_sensor.h 访问设备内置传感器(加速度计、陀螺仪、磁力计等)数据 HIDAPI SDL_hidapi.h 通用HID(人机接口设备)访问接口,支持自定义HID设备通信 力反馈(触觉) 分类 头文件 说明 力反馈支持 SDL_haptic.h 管理游戏控制器的力反馈(振动)效果,支持多种振动模式配置 音频 分类 头文件 说明 音频播放、录制与混音 SDL_audio.h 完整的音频处理接口,支持音频设备管理、音频流播放、录制和混音 GPU 分类 头文件 说明 3D渲染与GPU计算 SDL_gpu.h 提供高级GPU加速的3D渲染和通用计算能力,封装底层图形API 线程 分类 头文件 说明 线程管理 SDL_thread.h 跨平台线程创建、管理和控制接口,支持线程优先级设置 线程同步 SDL_mutex.h 提供互斥锁、条件变量、信号量等线程同步工具,防止资源竞争 原子操作 SDL_atomic.h 原子操作函数,支持无锁的线程安全数据访问和修改 时间 分类 头文件 说明 定时器支持 SDL_timer.h 提供高精度定时器和延时函数,支持定时回调和帧率控制 日期与时间 SDL_time.h 处理日期、时间相关操作,支持时间戳转换、时区处理等 文件与I/O抽象 分类 头文件 说明 文件系统访问 SDL_filesystem.h 跨平台文件系统路径获取,支持应用程序目录、资源目录等标准路径 存储抽象 SDL_storage.h 统一的存储访问接口,抽象不同存储介质(本地文件、云存储等) I/O流 SDL_iostream.h 通用的流I/O接口,支持文件、内存、网络等不同数据源的统一读写 异步I/O SDL_asyncio.h 异步输入输出操作接口,避免I/O操作阻塞主线程 平台与CPU信息 分类 头文件 说明 平台检测 SDL_platform.h 检测运行时的操作系统平台(Windows、macOS、Linux等) CPU特性检测 SDL_cpuinfo.h 检测CPU架构、核心数、缓存大小及SIMD等扩展指令集支持 编译器内置函数检测 SDL_intrin.h 检测并封装编译器内置函数,提供跨编译器的通用接口 字节序与字节交换 SDL_endian.h 处理不同CPU架构的字节序(大端/小端),提供字节交换函数 位操作 SDL_bits.h 提供高效的位操作函数,如位设置、清除、测试、位域提取等 附加功能 分类 头文件 说明 共享对象/DLL管理 SDL_loadso.h 跨平台动态加载共享库(DLL/SO/DYLIB),支持运行时函数解析 进程控制 SDL_process.h 创建和控制子进程,管理进程间通信和进程退出状态 电源管理状态 SDL_power.h 获取设备电源状态(电池电量、充电状态、剩余使用时间) 消息框 SDL_messagebox.h 创建系统原生的消息对话框,支持提示、警告、错误等类型 文件对话框 SDL_dialog.h 提供文件打开/保存对话框,支持文件类型过滤和路径选择 系统托盘 SDL_tray.h 管理系统托盘图标和菜单,支持托盘消息交互 区域设置信息 SDL_locale.h 获取系统区域设置信息,支持多语言适配 平台特定功能 SDL_system.h 封装各平台特有的系统功能,提供统一调用接口 标准库功能 SDL_stdinc.h 跨平台标准库替代接口,确保不同平台下基础类型和函数的一致性 全局唯一标识符 SDL_guid.h 生成和管理全局唯一标识符(GUID),用于设备和对象标识 其它项 SDL_misc.h 未归类的通用辅助功能,补充其他模块未覆盖的基础能力 SDL_image 图像扩展库,涵盖静态图像加载/保存、动画解码/编码、格式检测、GPU 纹理加载等全量功能 SDL_ttf 字体渲染扩展库,涵盖字体加载/管理、文本渲染(Surface/Renderer/GPU 三种模式)、字形/排版控制、多语言文本处理等功能 SDL_mixer 音频混音扩展库,旨在简化复杂的音频处理任务。它提供音频文件解码、多音效混音、基础 3D 定位音频、各类音频特效等核心能力,支持实时混音输出到多个音频设备,也可将混音数据生成到内存缓冲区,甚至能同时完成这两种操作 SDL_net 网络编程扩展库,它对 BSD Sockets、WinSock 等系统级网络 API 进行了轻量级封装,核心设计目标是简化网络编程复杂度、处理各类边界情况,让开发者无需关注底层协议细节即可实现网络通信
2026年-3月-5日
50 阅读
0 评论
VisualFreeBasic编程文档
2026-2-11
使用Sandboxie沙盒多开QQ游戏大厅
沙盒可以隔离任意软件,我们用来多开QQ游戏大厅,当然可以用来多开任意不可以多开的软件。 下载和安装沙盒 下载地址: https://sandboxie-plus.com/downloads/ 打开后点击这个下载 安装也简单,一直点下一步即可 新建沙盒 安装后,默认只有1个沙盒,我们需要多开,需要新建多个沙盒,需要多开几个,就新建几个,选择都是标准沙箱 如此,建立了多个沙盒 多开QQ游戏大厅 鼠标右键点击QQ游戏大厅,选择沙盒打开 一个沙盒开一个大厅,有麻点的沙盒表示已经开启,选择一个没麻点的即可 多开效果 如此,不使用任何破解工具,任何外挂软件,通过正常途径,多开了QQ游戏大厅,还支持里面游戏任意的多开,以前能多开的游戏它能开,以前无法多开的游戏,它也能开。 QQ游戏大厅残留 关闭QQ游戏大厅后,会残留后台软件,这是QQ游戏本身问题,我只可以在沙盒中点“终止所有”即可 这样就舒服了,麻点也没了。
2026年-2月-11日
378 阅读
0 评论
勇芳系列软件帮助说明教程
2026-2-6
QQ游戏大厅多开版_旧版_2012到2025版
QQ游戏大厅多开版,有以下年份的版本提供下载 2012 2013 2014 2015 2016 2017 2020 2023 2025 完全免费,无捆绑,无流氓,无附加,无木马,放心使用。 不过2017开始有奇怪行为,都是腾讯原版大厅的行为,并非多开版的事情。 下载地址: https://yfvb.lanzouu.com/b01huolwb 注意:由于2025文件太大,需要同时下载2个文件,然后解压后,才可以安装。 解压的,需要自己有解压软件,但要注意流氓解压,提示收费。 QQ游戏大厅是腾讯公司的,完全免费,不需要任何费用,要是提示收费请小心。 安装版是自己解压的,也属于解压方式,假如缺少运行库,那么你需要去腾讯官网下载,安装官方版本,然后再安装多开版,就可以使用了。
2026年-2月-6日
476 阅读
0 评论
优秀软件推荐
2026-2-6
Sandboxie沙盒(隔离软件)
Sandboxie 是一款基于沙盒的隔离软件,适用于基于32位和64位的Windows NT作系统。自开源以来,它由David Xanatos开发,之前由Sophos开发(Sophos从Invincea收购,Invincea又从原作者Ronen Tzur手中收购)。它创建了一个类似沙盒的隔离作环境,应用程序可以在不永久修改本地或映射驱动器的情况下运行或安装。隔离的虚拟环境允许对不可信程序和网页浏览进行受控测试。 下载地址: https://sandboxie-plus.com/downloads/ 用途 Sandboxie 的核心用途就是:把软件关在一个 “虚拟笼子” 里运行,让它无法破坏真实系统。 最核心的 4 大用途 1. 安全运行未知 / 可疑软件 运行陌生 exe、破解软件、测试病毒样本,都不会感染真实系统。 删文件、改注册表、装驱动,全在沙盒里,删沙盒就彻底清除。 2. 无痕上网 / 隐私保护 浏览器在沙盒里运行,浏览记录、Cookie、缓存、下载文件,关沙盒就全消失。 适合临时登录账号、看敏感内容,不留痕迹。 3. 软件多开 / 隔离多账号 微信、QQ、游戏、浏览器,一个沙盒一个实例,互不干扰。 每个沙盒有独立环境,账号、数据完全隔离。 4. 测试软件 / 系统不污染环境 测试安装软件、驱动、插件,不会在系统里留垃圾。 想卸载干净?直接删沙盒,比卸载软件干净 100 倍。 说明 选择下载“Sandboxie-Plus” 安装时选择 内存盘(RamDisk) 安装 (RamDisk + Sandboxie) 沙盒放在内存盘(RamDisk)里:速度极快 + 重启自动清空。 临时文件、缓存、下载都在内存盘,不写 SSD、不留痕迹。 病毒、垃圾、广告软件,关机就没了,连恢复都恢复不了。 有任何问题,可以问AI,都能给你解决。
2026年-2月-6日
277 阅读
0 评论
优秀软件推荐
2026-2-3
RayLib 3D绘画库 API 文档(中文,勇芳原创)
窗口相关函数 Declare Sub InitWindow(ByVal Width As Integer, ByVal height As Integer, ByVal title As ZString Ptr) 初始化窗口和 OpenGL 上下文 Declare Sub CloseWindow() 关闭窗口并卸载 OpenGL 上下文 Declare Function WindowShouldClose() As Boolean 检查应用程序是否应关闭(按下 ESC 键或点击窗口关闭图标) Declare Function IsWindowReady() As Boolean 检查窗口是否已成功初始化 Declare Function IsWindowFullscreen() As Boolean ' 检查窗口当前是否为全屏模式 Declare Function IsWindowHidden() As Boolean ' 检查窗口当前是否隐藏 Declare Function IsWindowMinimized() As Boolean ' 检查窗口当前是否最小化 Declare Function IsWindowMaximized() As Boolean ' 检查窗口当前是否最大化 Declare Function IsWindowFocused() As Boolean ' 检查窗口当前是否获得焦点 Declare Function IsWindowResized() As BOOLEAN ' 检查窗口在上一帧是否被调整大小 Declare Function IsWindowState(ByVal flag As UInteger) As BOOLEAN ' 检查是否启用了某个特定的窗口标志 Declare Sub SetWindowState(ByVal FLAGS As UInteger) ' 使用标志设置窗口配置状态 Declare Sub ClearWindowState(ByVal FLAGS As UInteger) ' 清除窗口配置状态标志 Declare Sub ToggleFullscreen() ' 切换窗口状态:全屏/窗口化,调整显示器以匹配窗口分辨率 Declare Sub ToggleBorderlessWindowed() ' 切换窗口状态:无边框窗口化,调整窗口以匹配显示器分辨率 Declare Sub MaximizeWindow() ' 设置窗口状态为最大化(如果窗口可调整大小) Declare Sub MinimizeWindow() ' 设置窗口状态为最小化(如果窗口可调整大小) Declare Sub RestoreWindow() ' 设置窗口状态为非最小化/非最大化 Declare Sub SetWindowIcon(ByVal image As Image) ' 设置窗口图标(单张图像,RGBA 32 位) Declare Sub SetWindowIcons(ByVal images As Image Ptr, ByVal count As Integer) ' 设置窗口图标(多张图像,RGBA 32 位) Declare Sub SetWindowTitle(ByVal title As ZString Ptr) ' 设置窗口标题 Declare Sub SetWindowPosition(ByVal x As Integer, ByVal y As Integer) ' 设置窗口在屏幕上的位置 Declare Sub SetWindowMonitor(ByVal monitor As Integer) ' 设置当前窗口所在的显示器 Declare Sub SetWindowMinSize(ByVal width As Integer, ByVal height As Integer) ' 设置窗口的最小尺寸(适用于可调整大小的窗口) Declare Sub SetWindowMaxSize(ByVal width As Integer, ByVal height As Integer) ' 设置窗口的最大尺寸(适用于可调整大小的窗口) Declare Sub SetWindowSize(ByVal width As Integer, ByVal height As Integer) ' 设置窗口尺寸 Declare Sub SetWindowOpacity(ByVal opacity As Single) ' 设置窗口透明度 [0.0f..1.0f] Declare Sub SetWindowFocused() ' 设置窗口获得焦点 Declare Function GetWindowHandle() As hWnd ' 获取原生窗口句柄 Declare Function GetScreenWidth() As Integer ' 获取当前屏幕宽度 Declare Function GetScreenHeight() As Integer ' 获取当前屏幕高度 Declare Function GetRenderWidth() As Integer ' 获取当前渲染宽度(考虑 HiDPI) Declare Function GetRenderHeight() As Integer ' 获取当前渲染高度(考虑 HiDPI) Declare Function GetMonitorCount() As Integer ' 获取连接的显示器数量 Declare Function GetCurrentMonitor() As Integer ' 获取窗口所在的当前显示器 Declare Function GetMonitorPosition(ByVal monitor As Integer) As Vector2 ' 获取指定显示器的位置 Declare Function GetMonitorWidth(ByVal monitor As Integer) As Integer ' 获取指定显示器的宽度(显示器当前使用的视频模式) Declare Function GetMonitorHeight(ByVal monitor As Integer) As Integer ' 获取指定显示器的高度(显示器当前使用的视频模式) Declare Function GetMonitorPhysicalWidth(ByVal monitor As Integer) As Integer ' 获取指定显示器的物理宽度(以毫米为单位) Declare Function GetMonitorPhysicalHeight(ByVal monitor As Integer) As Integer ' 获取指定显示器的物理高度(以毫米为单位) Declare Function GetMonitorRefreshRate(ByVal monitor As Integer) As Integer ' 获取指定显示器的刷新率 Declare Function GetWindowPosition() As Vector2 ' 获取窗口在显示器上的 XY 位置 Declare Function GetWindowScaleDPI() As Vector2 ' 获取窗口的缩放 DPI 因子 Declare Function GetMonitorName(ByVal monitor As Integer) As ZString Ptr ' 获取指定显示器的可读 UTF - 8 编码名称 Declare Sub SetClipboardText(ByVal text As ZString Ptr) ' 设置剪贴板的文本内容 Declare Function GetClipboardText() As ZString Ptr ' 获取剪贴板的文本内容 Declare Function GetClipboardImage() As Image ' 获取剪贴板的图像内容 Declare Sub EnableEventWaiting() ' 启用在 EndDrawing() 时等待事件,不进行自动事件轮询 Declare Sub DisableEventWaiting() ' 禁用在 EndDrawing() 时等待事件,进行自动事件轮询 光标相关函数 Declare Sub ShowCursor() 显示光标 Declare Sub HideCursor() 隐藏光标 Declare Function IsCursorHidden() As Boolean 检查光标是否不可见 Declare Sub EnableCursor() 启用光标(解锁光标) Declare Sub DisableCursor() 禁用光标(锁定光标) Declare Function IsCursorOnScreen() As BOOLEAN 检查光标是否在屏幕上 绘图相关函数 Declare Sub ClearBackground(ByVal Color As Color) 设置背景颜色(帧缓冲区清除颜色) Declare Sub BeginDrawing() 设置画布(帧缓冲区)以开始绘图 Declare Sub EndDrawing() 结束画布绘图并交换缓冲区(双缓冲) Declare Sub BeginMode2D(ByVal camera As Camera2D) 使用自定义相机开始 2D 模式绘图 Declare Sub EndMode2D() 结束自定义相机的 2D 模式绘图 Declare Sub BeginMode3D(ByVal camera As Camera3D) 使用自定义相机开始 3D 模式绘图 Declare Sub EndMode3D() 结束 3D 模式绘图并返回默认的 2D 正交模式 Declare Sub BeginTextureMode(ByVal target As RenderTexture2D) 开始向渲染纹理绘图 Declare Sub EndTextureMode() 结束向渲染纹理绘图 Declare Sub BeginShaderMode(ByVal shader As Shader) 开始使用自定义着色器绘图 Declare Sub EndShaderMode() 结束自定义着色器绘图(使用默认着色器) Declare Sub BeginBlendMode(ByVal mode As Integer)' 开始混合模式(alpha、加法、乘法、减法、自定义) Declare Sub EndBlendMode()' 结束混合模式(重置为默认:alpha 混合) Declare Sub BeginScissorMode(ByVal x As Integer, ByVal y As Integer, ByVal Width As Integer, ByVal height As Integer)' 开始剪刀模式(定义后续绘图的屏幕区域) Declare Sub EndScissorMode() 结束剪刀模式 着色器管理函数 Declare Function LoadShader(ByVal vsFileName As ZString Ptr, ByVal fsFileName As ZString Ptr) As Shader' 从文件加载着色器并绑定默认位置 Declare Function LoadShaderFromMemory(ByVal vsCode As ZString Ptr, ByVal fsCode As ZString Ptr) As Shader' 从代码字符串加载着色器并绑定默认位置 Declare Function IsShaderValid(ByVal shader As Shader) As Boolean' 检查着色器是否有效(已加载到 GPU) Declare Function GetShaderLocation(ByVal shader As Shader, ByVal uniformName As ZString Ptr) As Integer' 获取着色器统一变量的位置 Declare Function GetShaderLocationAttrib(ByVal shader As Shader, ByVal attribName As ZString Ptr) As Integer' 获取着色器属性的位置 Declare Sub SetShaderValue(ByVal shader As Shader, ByVal locIndex As Integer, ByVal value As Any Ptr, ByVal uniformType As Integer)' 设置着色器统一变量的值 Declare Sub SetShaderValueV(ByVal shader As Shader, ByVal locIndex As Integer, ByVal value As Any Ptr, ByVal uniformType As Integer, ByVal count As Integer)' 设置着色器统一变量的值向量 Declare Sub SetShaderValueMatrix(ByVal shader As Shader, ByVal locIndex As Integer, ByVal mat As Matrix)' 设置着色器统一变量的值(4x4 矩阵) Declare Sub SetShaderValueTexture(ByVal shader As Shader, ByVal locIndex As Integer, ByVal texture As Texture2D)' 设置着色器统一变量的值并绑定纹理(采样器 2D) Declare Sub UnloadShader(ByVal shader As Shader)' 从 GPU 内存(VRAM)卸载着色器 屏幕空间相关函数 Declare Function GetScreenToWorldRay(ByVal position As Vector2, ByVal camera As Camera) As Ray 从屏幕位置(如鼠标位置)获取一条射线(用于射线追踪) Declare Function GetScreenToWorldRayEx(ByVal position As Vector2, ByVal camera As Camera, ByVal Width As Integer, ByVal height As Integer) As Ray 在视口内从屏幕位置(如鼠标位置)获取一条射线(用于射线追踪) Declare Function GetWorldToScreen(ByVal position As Vector3, ByVal camera As Camera) As Vector2 获取 3D 世界空间位置对应的屏幕空间位置 Declare Function GetWorldToScreenEx(ByVal position As Vector3, ByVal camera As Camera, ByVal Width As Integer, ByVal height As Integer) As Vector2 获取 3D 世界空间位置对应的屏幕尺寸位置 Declare Function GetWorldToScreen2D(ByVal position As Vector2, ByVal camera As Camera2D) As Vector2 获取 2D 相机世界空间位置对应的屏幕空间位置 Declare Function GetScreenToWorld2D(ByVal position As Vector2, ByVal camera As Camera2D) As Vector2 获取 2D 相机屏幕空间位置对应的世界空间位置 Declare Function GetCameraMatrix(ByVal camera As Camera) As Matrix 获取相机的变换矩阵(视图矩阵) Declare Function GetCameraMatrix2D(ByVal camera As Camera2D) As Matrix 获取 2D 相机的变换矩阵 时间相关函数 Declare Sub SetTargetFPS(ByVal fps As Integer) 设置目标帧率(最大值) Declare Function GetFrameTime() As Single 获取上一帧绘制所用的时间(以秒为单位,即 delta 时间) Declare Function GetTime() As Double 获取自 InitWindow() 调用以来经过的时间(以秒为单位) Declare Function GetFPS() As Integer 获取当前帧率 自定义帧控制函数 ' 注意:这些函数供希望完全控制帧处理的高级用户使用 ' 默认情况下,EndDrawing() 完成以下工作:绘制所有内容 + 交换屏幕缓冲区 + 管理帧计时 + 轮询输入事件 ' 若要避免该默认行为并手动控制帧处理过程,请在 config.h 中启用:SUPPORT_CUSTOM_FRAME_CONTROL Declare Sub SwapScreenBuffer()' 交换后缓冲区和前缓冲区(用于屏幕绘制) Declare Sub PollInputEvents()' 注册所有输入事件 Declare Sub WaitTime(ByVal seconds As Double)' 等待一段时间(暂停程序执行) 随机值生成函数 Declare Sub SetRandomSeed(ByVal seed As UInteger)' 设置随机数生成器的种子 Declare Function GetRandomValue(ByVal min As Integer, ByVal max As Integer) As Integer' 获取一个介于 min 和 max 之间(包含两者)的随机值 Declare Function LoadRandomSequence(ByVal count As UInteger, ByVal min As Integer, ByVal max As Integer) As Integer Ptr' 加载随机值序列,序列中无重复值 Declare Sub UnloadRandomSequence(ByVal sequence As Integer Ptr)' 卸载随机值序列 杂项函数 Declare Sub TakeScreenshot(ByVal fileName As ZString Ptr)' 对当前屏幕进行截图(文件名扩展名决定文件格式) Declare Sub SetConfigFlags(ByVal FLAGS As UInteger)' 设置初始化配置标志(查看 FLAGS) Declare Sub OpenUrl(ByVal url As ZString Ptr)' 使用系统默认浏览器打开 URL(若可用) Declare Sub TraceLog(ByVal logLevel As Integer, ByVal text As ZString Ptr, ...)' 显示跟踪日志消息(如 LOG_DEBUG、LOG_INFO、LOG_WARNING、LOG_ERROR 等) Declare Sub SetTraceLogLevel(ByVal logLevel As Integer)' 设置当前的日志级别阈值(最低级别) Declare Function MemAlloc(ByVal SIZE As UInteger) As Any Ptr' 内部内存分配器 Declare Function MemRealloc(ByVal Ptr As Any Ptr, ByVal SIZE As UInteger) As Any Ptr' 内部内存重新分配器 Declare Sub MemFree(ByVal Ptr As Any Ptr) ' 内部内存释放函数 设置自定义回调函数 ' 警告:回调函数的设置适用于高级用户 Declare Sub SetTraceLogCallback(ByVal callback As TraceLogCallback)' 设置自定义跟踪日志回调函数 Declare Sub SetLoadFileDataCallback(ByVal callback As LoadFileDataCallback)' 设置自定义文件二进制数据加载回调函数 Declare Sub SetSaveFileDataCallback(ByVal callback As SaveFileDataCallback)' 设置自定义文件二进制数据保存回调函数 Declare Sub SetLoadFileTextCallback(ByVal callback As LoadFileTextCallback)' 设置自定义文件文本数据加载回调函数 Declare Sub SetSaveFileTextCallback(ByVal callback As SaveFileTextCallback)' 设置自定义文件文本数据保存回调函数 文件管理函数 Declare Function LoadFileData(ByVal fileName As ZString Ptr, ByVal dataSize As Integer) As UByte Ptr' 将文件数据作为字节数组加载(读取) Declare Sub UnloadFileData(ByVal Data As UByte Ptr) 卸载由 LoadFileData() 分配的文件数据 Declare Function SaveFileData(ByVal fileName As ZString Ptr, ByVal Data As Any Ptr, ByVal dataSize As Integer) As Boolean' 将字节数组中的数据保存到文件(写入),成功返回 True Declare Function ExportDataAsCode(ByVal data As UByte Ptr, ByVal dataSize As Integer, ByVal fileName As ZString Ptr) As Boolean' 将数据导出为代码文件(.h),成功返回 True Declare Function LoadFileText(ByVal fileName As ZString Ptr) As ZString Ptr' 从文件加载文本数据(读取),返回以 '\0' 结尾的字符串 Declare Sub UnloadFileText(ByVal text As ZString Ptr)' 卸载由 LoadFileText() 分配的文件文本数据 Declare Function SaveFileText(ByVal fileName As ZString Ptr, ByVal text As ZString Ptr) As BOOLEAN' 将文本数据保存到文件(写入),字符串必须以 '\0' 结尾,成功返回 True 文件系统函数 Declare Function FileExists(ByVal fileName As ZString Ptr) As Boolean' 检查文件是否存在 Declare Function DirectoryExists(ByVal dirPath As ZString Ptr) As Boolean' 检查目录路径是否存在 Declare Function IsFileExtension(ByVal fileName As ZString Ptr, ByVal ext As ZString Ptr) As Boolean' 检查文件扩展名(包含点:.png, .wav) Declare Function GetFileLength(ByVal fileName As ZString Ptr) As Integer' 获取文件的字节长度(注意:GetFileSize() 与 windows.h 冲突) Declare Function GetFileExtension(ByVal fileName As ZString Ptr) As ZString Ptr' 获取文件名中扩展名的指针(包含点:'.png') Declare Function GetFileName(ByVal filePath As ZString Ptr) As ZString Ptr' 获取路径字符串中文件名的指针 Declare Function GetFileNameWithoutExt(ByVal filePath As ZString Ptr) As ZString Ptr' 获取不带扩展名的文件名(使用静态字符串) Declare Function GetDirectoryPath(ByVal filePath As ZString Ptr) As ZString Ptr' 获取给定带路径文件名的完整路径(使用静态字符串) Declare Function GetPrevDirectoryPath(ByVal dirPath As ZString Ptr) As ZString Ptr' 获取给定路径的上一级目录路径(使用静态字符串) Declare Function GetWorkingDirectory() As ZString Ptr' 获取当前工作目录(使用静态字符串) Declare Function GetApplicationDirectory() As ZString Ptr' 获取正在运行的应用程序的目录(使用静态字符串) Declare Function MakeDirectory(ByVal dirPath As ZString Ptr) As Integer ' 创建目录(包括请求的完整路径),成功返回 0 Declare Function ChangeDirectory(ByVal Dir As ZString Ptr) As BOOLEAN ' 更改工作目录,成功返回 True Declare Function IsPathFile(ByVal path As ZString Ptr) As BOOLEAN ' 检查给定路径是文件还是目录 Declare Function IsFileNameValid(ByVal fileName As ZString Ptr) As Boolean ' 检查文件名在当前平台/操作系统下是否有效 Declare Function LoadDirectoryFiles(ByVal dirPath As ZString Ptr) As FilePathList ' 加载目录中的文件路径 Declare Function LoadDirectoryFilesEx(ByVal basePath As ZString Ptr, ByVal filter As ZString Ptr, ByVal scanSubdirs As Boolean) As FilePathList' 加载目录中的文件路径,并进行扩展名过滤和递归目录扫描。在过滤字符串中使用 'DIR' 可将目录包含在结果中 Declare Sub UnloadDirectoryFiles(ByVal files As FilePathList)' 卸载文件路径 Declare Function IsFileDropped() As BOOLEAN ' 检查是否有文件被拖放到窗口中 Declare Function LoadDroppedFiles() As FilePathList ' 加载被拖放的文件路径 Declare Sub UnloadDroppedFiles(ByVal files As FilePathList)' 卸载被拖放的文件路径 Declare Function GetFileModTime(ByVal fileName As ZString Ptr) As Long' 获取文件的修改时间(最后写入时间) 压缩/编码功能 Declare Function CompressData(ByVal Data As UByte Ptr, ByVal dataSize As Integer, ByVal compDataSize As Integer) As UByte Ptr' 压缩数据(使用 DEFLATE 算法),返回的内存需使用 MemFree() 释放 Declare Function DecompressData(ByVal compData As UByte Ptr, ByVal compDataSize As Integer, ByVal dataSize As Integer) As UByte Ptr' 解压缩数据(使用 DEFLATE 算法),返回的内存需使用 MemFree() 释放 Declare Function EncodeDataBase64(ByVal Data As UByte Ptr, ByVal dataSize As Integer, ByVal outputSize As Integer) As ZString Ptr' 将数据编码为 Base64 字符串,返回的内存需使用 MemFree() 释放 Declare Function DecodeDataBase64(ByVal Data As UByte Ptr, ByVal outputSize As Integer) As UByte Ptr' 解码 Base64 字符串数据,返回的内存需使用 MemFree() 释放 Declare Function ComputeCRC32(ByVal data As UByte Ptr, ByVal dataSize As Integer) As UInteger' 计算 CRC32 哈希码 Declare Function ComputeMD5(ByVal Data As UByte Ptr, ByVal dataSize As Integer) As UInteger Ptr' 计算 MD5 哈希码,返回静态 int[4](16 字节) Declare Function ComputeSHA1(ByVal Data As UByte Ptr, ByVal dataSize As Integer) As UInteger Ptr' 计算 SHA1 哈希码,返回静态 int[5](20 字节) 自动化事件功能 Declare Function LoadAutomationEventList(ByVal fileName As ZString Ptr) As AutomationEventList' 从文件加载自动化事件列表,若文件名为 NULL 则返回空列表,容量为 MAX_AUTOMATION_EVENTS Declare Sub UnloadAutomationEventList(ByVal list As AutomationEventList)' 从文件卸载自动化事件列表 Declare Function ExportAutomationEventList(ByVal list As AutomationEventList, ByVal fileName As ZString Ptr) As BOOLEAN' 将自动化事件列表导出为文本文件 Declare Sub SetAutomationEventList(ByVal list As AutomationEventList Ptr)' 设置要记录到的自动化事件列表 Declare Sub SetAutomationEventBaseFrame(ByVal frame As Integer)' 设置自动化事件内部的基础帧,用于开始记录 Declare Sub StartAutomationEventRecording()' 开始记录自动化事件(必须先设置 AutomationEventList) Declare Sub StopAutomationEventRecording()' 停止记录自动化事件 Declare Sub PlayAutomationEvent(ByVal Event As AutomationEvent)' 播放已记录的自动化事件 输入相关函数: 键盘 Declare Function IsKeyPressed(ByVal key As Integer) As Boolean' 检查某个键是否被按下一次 Declare Function IsKeyPressedRepeat(ByVal key As Integer) As BOOLEAN' 检查某个键是否再次被按下 Declare Function IsKeyDown(ByVal key As Integer) As BOOLEAN' 检查某个键是否正在被按下 Declare Function IsKeyReleased(ByVal key As Integer) As BOOLEAN' 检查某个键是否被释放一次 Declare Function IsKeyUp(ByVal key As Integer) As Boolean' 检查某个键是否未被按下 Declare Function GetKeyPressed() As Integer' 获取被按下的键(键码),多次调用以处理排队的按键,队列为空时返回 0 Declare Function GetCharPressed() As Integer' 获取被按下的字符(Unicode),多次调用以处理排队的字符,队列为空时返回 0 Declare Function GetKeyName(ByVal key As Integer) As ZString Ptr' 获取当前键盘布局下 QWERTY 键的名称(例如在 AZERTY 键盘上,对于 KEY_A 返回字符串 'q') Declare Sub SetExitKey(ByVal key As Integer)' 设置用于退出程序的自定义键(默认是 ESC) 输入相关函数: 游戏手柄 Declare Function IsGamepadAvailable(ByVal gamepad As Integer) As BOOLEAN' 检查某个游戏手柄是否可用 Declare Function GetGamepadName(ByVal gamepad As Integer) As ZString Ptr' 获取游戏手柄的内部名称标识 Declare Function IsGamepadButtonPressed(ByVal gamepad As Integer, ByVal button As Integer) As Boolean' 检查游戏手柄的某个按钮是否被按下一次 Declare Function IsGamepadButtonDown(ByVal gamepad As Integer, ByVal button As Integer) As Boolean' 检查游戏手柄的某个按钮是否正在被按下 Declare Function IsGamepadButtonReleased(ByVal gamepad As Integer, ByVal button As Integer) As Boolean' 检查游戏手柄的某个按钮是否被释放一次 Declare Function IsGamepadButtonUp(ByVal gamepad As Integer, ByVal button As Integer) As Boolean' 检查游戏手柄的某个按钮是否未被按下 Declare Function GetGamepadButtonPressed() As Integer' 获取最后按下的游戏手柄按钮 Declare Function GetGamepadAxisCount(ByVal gamepad As Integer) As Integer' 获取某个游戏手柄的轴数量 Declare Function GetGamepadAxisMovement(ByVal gamepad As Integer, ByVal axis As Integer) As Single' 获取游戏手柄某个轴的移动值 Declare Function SetGamepadMappings(ByVal mappings As ZString Ptr) As Integer' 设置内部游戏手柄映射(SDL_GameControllerDB) Declare Sub SetGamepadVibration(ByVal gamepad As Integer, ByVal leftMotor As Single, ByVal rightMotor As Single, ByVal duration As Single)' 设置游戏手柄两个电机的振动(持续时间以秒为单位) 输入相关函数: 鼠标 Declare Function IsMouseButtonPressed(ByVal button As Integer) As BOOLEAN' 检查鼠标按钮是否被按下一次 Declare Function IsMouseButtonDown(ByVal button As Integer) As BOOLEAN' 检查鼠标按钮是否正在被按下 Declare Function IsMouseButtonReleased(ByVal button As Integer) As Boolean' 检查鼠标按钮是否被释放一次 Declare Function IsMouseButtonUp(ByVal button As Integer) As BOOLEAN' 检查鼠标按钮是否未被按下 Declare Function GetMouseX() As Integer' 获取鼠标的 X 坐标位置 Declare Function GetMouseY() As Integer ' 获取鼠标的 Y 坐标位置 Declare Function GetMousePosition() As Vector2' 获取鼠标的 XY 坐标位置 Declare Function GetMouseDelta() As Vector2' 获取帧与帧之间鼠标的位移 Declare Sub SetMousePosition(ByVal x As Integer, ByVal y As Integer)' 设置鼠标的 XY 坐标位置 Declare Sub SetMouseOffset(ByVal offsetX As Integer, ByVal offsetY As Integer)' 设置鼠标的偏移量 Declare Sub SetMouseScale(ByVal scaleX As Single, ByVal scaleY As Single)' 设置鼠标的缩放比例 Declare Function GetMouseWheelMove() As Single' 获取鼠标滚轮在 X 或 Y 方向上的移动量(取较大值) Declare Function GetMouseWheelMoveV() As Vector2' 获取鼠标滚轮在 X 和 Y 方向上的移动量 Declare Sub SetMouseCursor(ByVal cursor As Integer)' 设置鼠标光标样式 输入相关函数: 触摸 Declare Function GetTouchX() As Integer' 获取触摸点 0 的 X 坐标位置(相对于屏幕尺寸) Declare Function GetTouchY() As Integer' 获取触摸点 0 的 Y 坐标位置(相对于屏幕尺寸) Declare Function GetTouchPosition(ByVal index As Integer) As Vector2' 获取指定索引触摸点的 XY 坐标位置(相对于屏幕尺寸) Declare Function GetTouchPointId(ByVal index As Integer) As Integer ' 获取指定索引触摸点的标识符 Declare Function GetTouchPointCount() As Integer' 获取触摸点的数量 手势和触摸处理函数 (模块: rgestures) Declare Sub SetGesturesEnabled(ByVal FLAGS As UInteger)' 使用标志启用一组手势 Declare Function IsGestureDetected(ByVal gesture As UInteger) As Boolean' 检查是否检测到某个手势 Declare Function GetGestureDetected() As Integer' 获取最新检测到的手势 Declare Function GetGestureHoldDuration() As Single' 获取手势保持的时间(以秒为单位) Declare Function GetGestureDragVector() As Vector2' 获取手势拖动向量 Declare Function GetGestureDragAngle() As Single' 获取手势拖动角度 Declare Function GetGesturePinchVector() As Vector2' 获取手势捏合的增量 Declare Function GetGesturePinchAngle() As Single' 获取手势捏合角度 相机系统函数 (模块: rcamera) Declare Sub UpdateCamera(ByVal camera As Camera Ptr, ByVal mode As Integer)' 为选定模式更新相机位置 Declare Sub UpdateCameraPro(ByVal camera As Camera Ptr, ByVal movement As Vector3, ByVal rotation As Vector3, ByVal zoom As Single)' 更新相机的移动/旋转 基本形状绘制函数 (模块: shapes) ' 设置用于形状绘制的纹理和矩形 ' 注意: 当使用基本形状和单个字体时可能很有用, ' 定义字体字符的白色矩形可以在一次绘制调用中绘制所有内容 Declare Sub SetShapesTexture(ByVal texture As Texture2D, ByVal source As Rectangle)' 设置用于形状绘制的纹理和矩形 Declare Function GetShapesTexture() As Texture2D' 获取用于形状绘制的纹理 Declare Function GetShapesTextureRectangle() As Rectangle' 获取用于形状绘制的纹理源矩形 Declare Sub DrawPixel(ByVal posX As Integer, ByVal posY As Integer, ByVal Color As Color)' 用几何方式绘制一个像素 [可能较慢,谨慎使用] Declare Sub DrawPixelV(ByVal position As Vector2, ByVal Color As Color)' 用几何方式绘制一个像素(向量版本) [可能较慢,谨慎使用] Declare Sub DrawLine(ByVal startPosX As Integer, ByVal startPosY As Integer, ByVal endPosX As Integer, ByVal endPosY As Integer, ByVal Color As Color)' 绘制一条直线 Declare Sub DrawLineV(ByVal startPos As Vector2, ByVal endPos As Vector2, ByVal color As Color)' 绘制一条直线(使用 OpenGL 直线) Declare Sub DrawLineEx(ByVal startPos As Vector2, ByVal endPos As Vector2, ByVal thick As Single, ByVal color As Color)' 绘制一条直线(使用三角形/四边形) Declare Sub DrawLineStrip(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal color As Color)' 绘制直线序列(使用 OpenGL 直线) Declare Sub DrawLineBezier(ByVal startPos As Vector2, ByVal endPos As Vector2, ByVal thick As Single, ByVal color As Color)' 绘制线段的三次贝塞尔进出插值曲线 Declare Sub DrawCircle(ByVal centerX As Integer, ByVal centerY As Integer, ByVal radius As Single, ByVal Color As Color) ' 绘制一个填充颜色的圆 Declare Sub DrawCircleSector(ByVal center As Vector2, ByVal radius As Single, ByVal startAngle As Single, ByVal endAngle As Single, ByVal segments As Integer, ByVal color As Color)' 绘制圆的一部分 Declare Sub DrawCircleSectorLines(ByVal center As Vector2, ByVal radius As Single, ByVal startAngle As Single, ByVal endAngle As Single, ByVal segments As Integer, ByVal color As Color)' 绘制圆扇区的轮廓 Declare Sub DrawCircleGradient(ByVal centerX As Integer, ByVal centerY As Integer, ByVal radius As Single, ByVal inner As Color, ByVal outer As Color)' 绘制一个填充渐变颜色的圆 Declare Sub DrawCircleV(ByVal center As Vector2, ByVal radius As Single, ByVal color As Color)' 绘制一个填充颜色的圆(向量版本) Declare Sub DrawCircleLines(ByVal centerX As Integer, ByVal centerY As Integer, ByVal radius As Single, ByVal color As Color)' 绘制圆的轮廓 Declare Sub DrawCircleLinesV(ByVal center As Vector2, ByVal radius As Single, ByVal color As Color)' 绘制圆的轮廓(向量版本) Declare Sub DrawEllipse(ByVal centerX As Integer, ByVal centerY As Integer, ByVal radiusH As Single, ByVal radiusV As Single, ByVal color As Color)' 绘制椭圆 Declare Sub DrawEllipseLines(ByVal centerX As Integer, ByVal centerY As Integer, ByVal radiusH As Single, ByVal radiusV As Single, ByVal color As Color)' 绘制椭圆的轮廓 Declare Sub DrawRing(ByVal center As Vector2, ByVal innerRadius As Single, ByVal outerRadius As Single, ByVal startAngle As Single, ByVal endAngle As Single, ByVal segments As Integer, ByVal color As Color)' 绘制圆环 Declare Sub DrawRingLines(ByVal center As Vector2, ByVal innerRadius As Single, ByVal outerRadius As Single, ByVal startAngle As Single, ByVal endAngle As Single, ByVal segments As Integer, ByVal color As Color)' 绘制圆环的轮廓 Declare Sub DrawRectangle(ByVal posX As Integer, ByVal posY As Integer, ByVal width As Integer, ByVal height As Integer, ByVal color As Color) ' 绘制一个填充颜色的矩形 Declare Sub DrawRectangleV(ByVal position As Vector2, ByVal size As Vector2, ByVal color As Color)' 绘制一个填充颜色的矩形(向量版本) Declare Sub DrawRectangleRec(ByVal rec As Rectangle, ByVal color As Color)' 绘制一个填充颜色的矩形 Declare Sub DrawRectanglePro(ByVal rec As Rectangle, ByVal origin As Vector2, ByVal rotation As Single, ByVal Color As Color)' 用专业参数绘制一个填充颜色的矩形 Declare Sub DrawRectangleGradientV(ByVal posX As Integer, ByVal posY As Integer, ByVal width As Integer, ByVal height As Integer, ByVal top As Color, ByVal bottom As Color)' 绘制一个垂直渐变填充的矩形 Declare Sub DrawRectangleGradientH(ByVal posX As Integer, ByVal posY As Integer, ByVal width As Integer, ByVal height As Integer, ByVal left As Color, ByVal right As Color)' 绘制一个水平渐变填充的矩形 Declare Sub DrawRectangleGradientEx(ByVal rec As Rectangle, ByVal topLeft As Color, ByVal bottomLeft As Color, ByVal topRight As Color, ByVal bottomRight As Color)' 用自定义顶点颜色绘制一个渐变填充的矩形 Declare Sub DrawRectangleLines(ByVal posX As Integer, ByVal posY As Integer, ByVal width As Integer, ByVal height As Integer, ByVal color As Color)' 绘制矩形的轮廓 Declare Sub DrawRectangleLinesEx(ByVal rec As Rectangle, ByVal lineThick As Single, ByVal color As Color)' 用扩展参数绘制矩形的轮廓 Declare Sub DrawRectangleRounded(ByVal rec As Rectangle, ByVal roundness As Single, ByVal segments As Integer, ByVal color As Color) ' 绘制带圆角的矩形 Declare Sub DrawRectangleRoundedLines(ByVal rec As Rectangle, ByVal roundness As Single, ByVal segments As Integer, ByVal Color As Color) ' 绘制带圆角的矩形轮廓 Declare Sub DrawRectangleRoundedLinesEx(ByVal rec As Rectangle, ByVal roundness As Single, ByVal segments As Integer, ByVal lineThick As Single, ByVal Color As Color)' 绘制带圆角的矩形的轮廓 Declare Sub DrawTriangle(ByVal v1 As Vector2, ByVal v2 As Vector2, ByVal v3 As Vector2, ByVal Color As Color)' 绘制一个填充颜色的三角形(顶点按逆时针顺序!) Declare Sub DrawTriangleLines(ByVal v1 As Vector2, ByVal v2 As Vector2, ByVal v3 As Vector2, ByVal color As Color)' 绘制三角形的轮廓(顶点按逆时针顺序!) Declare Sub DrawTriangleFan(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal color As Color)' 绘制由点定义的三角形扇(第一个顶点是中心) Declare Sub DrawTriangleStrip(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal color As Color)' 绘制由点定义的三角形条 Declare Sub DrawPoly(ByVal center As Vector2, ByVal sides As Integer, ByVal radius As Single, ByVal rotation As Single, ByVal Color As Color)' 绘制一个正多边形(向量版本) Declare Sub DrawPolyLines(ByVal center As Vector2, ByVal sides As Integer, ByVal radius As Single, ByVal rotation As Single, ByVal Color As Color)' 绘制 n 边形的轮廓 Declare Sub DrawPolyLinesEx(ByVal center As Vector2, ByVal sides As Integer, ByVal radius As Single, ByVal rotation As Single, ByVal lineThick As Single, ByVal Color As Color)' 用扩展参数绘制 n 边形的轮廓 样条曲线绘制函数 Declare Sub DrawSplineLinear(ByVal POINTS As Vector2 Ptr, ByVal pointCount As Integer, ByVal thick As Single, ByVal Color As Color)' 绘制样条曲线:线性,至少 2 个点 Declare Sub DrawSplineBasis(ByVal POINTS As Vector2 Ptr, ByVal pointCount As Integer, ByVal thick As Single, ByVal Color As Color) ' 绘制样条曲线:B - 样条,至少 4 个点 Declare Sub DrawSplineCatmullRom(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal thick As Single, ByVal color As Color) ' 绘制样条曲线:Catmull - Rom,至少 4 个点 Declare Sub DrawSplineBezierQuadratic(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal thick As Single, ByVal color As Color)' 绘制样条曲线:二次贝塞尔,至少 3 个点(1 个控制点):[p1, c2, p3, c4...] Declare Sub DrawSplineBezierCubic(ByVal points As Vector2 Ptr, ByVal pointCount As Integer, ByVal thick As Single, ByVal color As Color)' 绘制样条曲线:三次贝塞尔,至少 4 个点(2 个控制点):[p1, c2, c3, p4, c5, c6...] Declare Sub DrawSplineSegmentLinear(ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal thick As Single, ByVal color As Color)' 绘制样条线段:线性,2 个点 Declare Sub DrawSplineSegmentBasis(ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal p3 As Vector2, ByVal p4 As Vector2, ByVal thick As Single, ByVal color As Color) ' 绘制样条线段:B - 样条,4 个点 Declare Sub DrawSplineSegmentCatmullRom(ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal p3 As Vector2, ByVal p4 As Vector2, ByVal thick As Single, ByVal color As Color)' 绘制样条线段:Catmull - Rom,4 个点 Declare Sub DrawSplineSegmentBezierQuadratic(ByVal p1 As Vector2, ByVal c2 As Vector2, ByVal p3 As Vector2, ByVal thick As Single, ByVal color As Color) ' 绘制样条线段:二次贝塞尔,2 个点,1 个控制点 Declare Sub DrawSplineSegmentBezierCubic(ByVal p1 As Vector2, ByVal c2 As Vector2, ByVal c3 As Vector2, ByVal p4 As Vector2, ByVal thick As Single, ByVal Color As Color)' 绘制样条线段:三次贝塞尔,2 个点,2 个控制点 样条线段点评估函数,针对给定的 t [0.0f .. 1.0f] Declare Function GetSplinePointLinear(ByVal startPos As Vector2, ByVal endPos As Vector2, ByVal t As Single) As Vector2' 获取(评估)样条线上的点:线性 Declare Function GetSplinePointBasis(ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal p3 As Vector2, ByVal p4 As Vector2, ByVal t As Single) As Vector2' 获取(评估)样条线上的点:B - 样条 Declare Function GetSplinePointCatmullRom(ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal p3 As Vector2, ByVal p4 As Vector2, ByVal t As Single) As Vector2' 获取(评估)样条线上的点:Catmull - Rom Declare Function GetSplinePointBezierQuad(ByVal p1 As Vector2, ByVal c2 As Vector2, ByVal p3 As Vector2, ByVal t As Single) As Vector2' 获取(评估)样条线上的点:二次贝塞尔 Declare Function GetSplinePointBezierCubic(ByVal p1 As Vector2, ByVal c2 As Vector2, ByVal c3 As Vector2, ByVal p4 As Vector2, ByVal t As Single) As Vector2' 获取(评估)样条线上的点:三次贝塞尔 基本形状碰撞检测函数 Declare Function CheckCollisionRecs(ByVal rec1 As Rectangle, ByVal rec2 As Rectangle) As BOOLEAN ' 检查两个矩形之间是否发生碰撞 Declare Function CheckCollisionCircles(ByVal center1 As Vector2, ByVal radius1 As Single, ByVal center2 As Vector2, ByVal radius2 As Single) As BOOLEAN ' 检查两个圆之间是否发生碰撞 Declare Function CheckCollisionCircleRec(ByVal center As Vector2, ByVal radius As Single, ByVal rec As Rectangle) As BOOLEAN ' 检查圆与矩形之间是否发生碰撞 Declare Function CheckCollisionCircleLine(ByVal center As Vector2, ByVal radius As Single, ByVal p1 As Vector2, ByVal p2 As Vector2) As Boolean ' 检查圆是否与由两点 [p1] 和 [p2] 构成的直线发生碰撞 Declare Function CheckCollisionPointRec(ByVal Point As Vector2, ByVal rec As Rectangle) As BOOLEAN ' 检查点是否在矩形内部 Declare Function CheckCollisionPointCircle(ByVal Point As Vector2, ByVal center As Vector2, ByVal radius As Single) As BOOLEAN ' 检查点是否在圆内部 Declare Function CheckCollisionPointTriangle(ByVal point As Vector2, ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal p3 As Vector2) As Boolean ' 检查点是否在三角形内部 Declare Function CheckCollisionPointLine(ByVal point As Vector2, ByVal p1 As Vector2, ByVal p2 As Vector2, ByVal threshold As Integer) As Boolean ' 检查点是否在由两点 [p1] 和 [p2] 构成的直线上,允许有像素级的误差范围 [threshold] Declare Function CheckCollisionPointPoly(ByVal point As Vector2, ByVal points As Vector2 Ptr, ByVal pointCount As Integer) As Boolean ' 检查点是否在由顶点数组描述的多边形内部 Declare Function CheckCollisionLines(ByVal startPos1 As Vector2, ByVal endPos1 As Vector2, ByVal startPos2 As Vector2, ByVal endPos2 As Vector2, ByVal collisionPoint As Vector2 Ptr) As BOOLEAN ' 检查由两组两点定义的两条直线是否发生碰撞,通过引用返回碰撞点 Declare Function GetCollisionRec(ByVal rec1 As Rectangle, ByVal rec2 As Rectangle) As Rectangle ' 获取两个矩形碰撞产生的碰撞矩形 图像加载函数 ' 注意: 这些函数不需要访问 GPU Declare Function LoadImage(ByVal fileName As ZString Ptr) As Image ' 从文件将图像加载到 CPU 内存 (RAM) 中 Declare Function LoadImageRaw(ByVal fileName As ZString Ptr, ByVal width As Integer, ByVal height As Integer, ByVal format As Integer, ByVal headerSize As Integer) As Image ' 从原始文件数据加载图像 Declare Function LoadImageAnim(ByVal fileName As ZString Ptr, ByVal frames As Integer Ptr) As Image ' 从文件加载图像序列 (帧追加到 image.data) Declare Function LoadImageAnimFromMemory(ByVal fileType As ZString Ptr, ByVal fileData As UByte Ptr, ByVal dataSize As Integer, ByVal frames As Integer Ptr) As Image ' 从内存缓冲区加载图像序列 Declare Function LoadImageFromMemory(ByVal fileType As ZString Ptr, ByVal fileData As UByte Ptr, ByVal dataSize As Integer) As Image ' 从内存缓冲区加载图像,fileType 指文件扩展名,如 '.png' Declare Function LoadImageFromTexture(ByVal Texture As Texture2D) As Image ' 从 GPU 纹理数据加载图像 Declare Function LoadImageFromScreen() As Image ' 从屏幕缓冲区加载图像 (截图) Declare Function IsImageValid(ByVal image As Image) As BOOLEAN ' 检查图像是否有效 (数据和参数) Declare Sub UnloadImage(ByVal image As Image) ' 从 CPU 内存 (RAM) 中卸载图像 Declare Function ExportImage(ByVal Image As Image, ByVal fileName As ZString Ptr) As Boolean ' 将图像数据导出到文件,成功返回 True Declare Function ExportImageToMemory(ByVal Image As Image, ByVal fileType As ZString Ptr, ByVal fileSize As Integer Ptr) As UByte Ptr ' 将图像导出到内存缓冲区 Declare Function ExportImageAsCode(ByVal image As Image, ByVal fileName As ZString Ptr) As Boolean ' 将图像作为定义字节数组的代码文件导出,成功返回 True 图像生成函数 Declare Function GenImageColor(ByVal Width As Integer, ByVal height As Integer, ByVal Color As Color) As Image ' 生成图像:纯色图像 Declare Function GenImageGradientLinear(ByVal width As Integer, ByVal height As Integer, ByVal direction As Integer, ByVal start As Color, ByVal end As Color) As Image ' 生成图像:线性渐变图像,方向以度为单位 [0..360],0 表示垂直渐变 Declare Function GenImageGradientRadial(ByVal width As Integer, ByVal height As Integer, ByVal density As Single, ByVal inner As Color, ByVal outer As Color) As Image ' 生成图像:径向渐变图像 Declare Function GenImageGradientSquare(ByVal Width As Integer, ByVal height As Integer, ByVal density As Single, ByVal inner As Color, ByVal outer As Color) As Image ' 生成图像:方形渐变图像 Declare Function GenImageChecked(ByVal width As Integer, ByVal height As Integer, ByVal checksX As Integer, ByVal checksY As Integer, ByVal col1 As Color, ByVal col2 As Color) As Image ' 生成图像:棋盘格图像 Declare Function GenImageWhiteNoise(ByVal width As Integer, ByVal height As Integer, ByVal factor As Single) As Image ' 生成图像:白噪声图像 Declare Function GenImagePerlinNoise(ByVal width As Integer, ByVal height As Integer, ByVal offsetX As Integer, ByVal offsetY As Integer, ByVal scale As Single) As Image ' 生成图像:Perlin 噪声图像 Declare Function GenImageCellular(ByVal width As Integer, ByVal height As Integer, ByVal tileSize As Integer) As Image ' 生成图像:细胞算法图像,tileSize 越大,细胞越大 Declare Function GenImageText(ByVal Width As Integer, ByVal height As Integer, ByVal text As ZString Ptr) As Image ' 生成图像:根据文本数据生成灰度图像 图像操作函数 Declare Function ImageCopy(ByVal image As Image) As Image ' 创建图像副本(用于变换操作很有用) Declare Function ImageFromImage(ByVal image As Image, ByVal rec As Rectangle) As Image ' 从另一个图像的部分区域创建新图像 Declare Function ImageFromChannel(ByVal image As Image, ByVal selectedChannel As Integer) As Image ' 从另一个图像的选定通道创建新图像(灰度图) Declare Function ImageText(ByVal text As ZString Ptr, ByVal fontSize As Integer, ByVal Color As Color) As Image ' 根据文本创建图像(使用默认字体) Declare Function ImageTextEx(ByVal font As Font, ByVal text As ZString Ptr, ByVal fontSize As Single, ByVal spacing As Single, ByVal tint As Color) As Image ' 根据文本创建图像(使用自定义精灵字体) Declare Sub ImageFormat(ByVal image As Image Ptr, ByVal newFormat As Integer) ' 将图像数据转换为所需的格式 Declare Sub ImageToPOT(ByVal image As Image Ptr, ByVal fill As Color) ' 将图像转换为 2 的幂次方尺寸(POT) Declare Sub ImageCrop(ByVal image As Image Ptr, ByVal crop As Rectangle) ' 将图像裁剪到指定的矩形区域 Declare Sub ImageAlphaCrop(ByVal image As Image Ptr, ByVal threshold As Single) ' 根据 alpha 值裁剪图像 Declare Sub ImageAlphaClear(ByVal image As Image Ptr, ByVal Color As Color, ByVal threshold As Single) ' 将 alpha 通道清除为指定颜色 Declare Sub ImageAlphaMask(ByVal image As Image Ptr, ByVal alphaMask As Image) ' 对图像应用 alpha 遮罩 Declare Sub ImageAlphaPremultiply(ByVal image As Image Ptr) ' 预乘 alpha 通道 Declare Sub ImageBlurGaussian(ByVal image As Image Ptr, ByVal blurSize As Integer) ' 使用盒式模糊近似应用高斯模糊 Declare Sub ImageKernelConvolution(ByVal image As Image Ptr, ByVal kernel As Single Ptr, ByVal kernelSize As Integer) ' 对图像应用自定义方形卷积核 Declare Sub ImageResize(ByVal image As Image Ptr, ByVal newWidth As Integer, ByVal newHeight As Integer) ' 调整图像大小(使用双三次缩放算法) Declare Sub ImageResizeNN(ByVal image As Image Ptr, ByVal newWidth As Integer, ByVal newHeight As Integer) ' 调整图像大小(使用最近邻缩放算法) Declare Sub ImageResizeCanvas(ByVal image As Image Ptr, ByVal newWidth As Integer, ByVal newHeight As Integer, ByVal offsetX As Integer, ByVal offsetY As Integer, ByVal fill As Color) ' 调整画布大小并填充颜色 Declare Sub ImageMipmaps(ByVal image As Image Ptr) ' 为提供的图像计算所有 mipmap 级别 Declare Sub ImageDither(ByVal image As Image Ptr, ByVal rBpp As Integer, ByVal gBpp As Integer, ByVal bBpp As Integer, ByVal aBpp As Integer) ' 将图像数据抖动为 16 位或更低(使用 Floyd - Steinberg 抖动算法) Declare Sub ImageFlipVertical(ByVal image As Image Ptr) ' 垂直翻转图像 Declare Sub ImageFlipHorizontal(ByVal image As Image Ptr) ' 水平翻转图像 Declare Sub ImageRotate(ByVal image As Image Ptr, ByVal degrees As Integer) ' 按输入角度(以度为单位,范围 - 359 到 359)旋转图像 Declare Sub ImageRotateCW(ByVal image As Image Ptr) ' 顺时针旋转图像 90 度 Declare Sub ImageRotateCCW(ByVal image As Image Ptr) ' 逆时针旋转图像 90 度 Declare Sub ImageColorTint(ByVal image As Image Ptr, ByVal Color As Color) ' 修改图像颜色:着色 Declare Sub ImageColorInvert(ByVal image As Image Ptr) ' 修改图像颜色:反色 Declare Sub ImageColorGrayscale(ByVal image As Image Ptr) ' 修改图像颜色:转换为灰度图 Declare Sub ImageColorContrast(ByVal image As Image Ptr, ByVal contrast As Single) ' 修改图像颜色:调整对比度(范围 - 100 到 100) Declare Sub ImageColorBrightness(ByVal image As Image Ptr, ByVal brightness As Integer) ' 修改图像颜色:调整亮度(范围 - 255 到 255) Declare Sub ImageColorReplace(ByVal image As Image Ptr, ByVal Color As Color, ByVal replace As Color) ' 修改图像颜色:替换颜色 Declare Function LoadImageColors(ByVal image As Image) As Color Ptr ' 从图像加载颜色数据作为颜色数组(RGBA - 32 位) Declare Function LoadImagePalette(ByVal image As Image, ByVal maxPaletteSize As Integer, ByVal colorCount As Integer Ptr) As Color Ptr ' 从图像加载颜色调色板作为颜色数组(RGBA - 32 位) Declare Sub UnloadImageColors(ByVal colors As Color Ptr) ' 卸载通过 LoadImageColors() 加载的颜色数据 Declare Sub UnloadImagePalette(ByVal colors As Color Ptr) ' 卸载通过 LoadImagePalette() 加载的颜色调色板 Declare Function GetImageAlphaBorder(ByVal image As Image, ByVal threshold As Single) As Rectangle ' 获取图像 alpha 边界矩形 Declare Function GetImageColor(ByVal image As Image, ByVal x As Integer, ByVal y As Integer) As Color ' 获取图像指定位置的颜色 图像绘制函数 ' 注意: 图像软件渲染函数 (CPU) Declare Sub ImageClearBackground(ByVal dst As Image Ptr, ByVal Color As Color) ' 用指定颜色清除图像背景 Declare Sub ImageDrawPixel(ByVal dst As Image Ptr, ByVal posX As Integer, ByVal posY As Integer, ByVal Color As Color) ' 在图像内绘制像素 Declare Sub ImageDrawPixelV(ByVal dst As Image Ptr, ByVal position As Vector2, ByVal Color As Color) ' 在图像内绘制像素 (向量版本) Declare Sub ImageDrawLine(ByVal dst As Image Ptr, ByVal startPosX As Integer, ByVal startPosY As Integer, ByVal endPosX As Integer, ByVal endPosY As Integer, ByVal Color As Color) ' 在图像内绘制直线 Declare Sub ImageDrawLineV(ByVal dst As Image Ptr, ByVal start As Vector2, ByVal End As Vector2, ByVal Color As Color) ' 在图像内绘制直线 (向量版本) Declare Sub ImageDrawLineEx(ByVal dst As Image Ptr, ByVal start As Vector2, ByVal End As Vector2, ByVal thick As Integer, ByVal Color As Color) ' 在图像内绘制指定厚度的直线 Declare Sub ImageDrawCircle(ByVal dst As Image Ptr, ByVal centerX As Integer, ByVal centerY As Integer, ByVal radius As Integer, ByVal Color As Color) ' 在图像内绘制填充的圆 Declare Sub ImageDrawCircleV(ByVal dst As Image Ptr, ByVal center As Vector2, ByVal radius As Integer, ByVal Color As Color) ' 在图像内绘制填充的圆 (向量版本) Declare Sub ImageDrawCircleLines(ByVal dst As Image Ptr, ByVal centerX As Integer, ByVal centerY As Integer, ByVal radius As Integer, ByVal Color As Color) ' 在图像内绘制圆的轮廓 Declare Sub ImageDrawCircleLinesV(ByVal dst As Image Ptr, ByVal center As Vector2, ByVal radius As Integer, ByVal Color As Color) ' 在图像内绘制圆的轮廓 (向量版本) Declare Sub ImageDrawRectangle(ByVal dst As Image Ptr, ByVal posX As Integer, ByVal posY As Integer, ByVal Width As Integer, ByVal height As Integer, ByVal Color As Color) ' 在图像内绘制矩形 Declare Sub ImageDrawRectangleV(ByVal dst As Image Ptr, ByVal position As Vector2, ByVal SIZE As Vector2, ByVal Color As Color) ' 在图像内绘制矩形 (向量版本) Declare Sub ImageDrawRectangleRec(ByVal dst As Image Ptr, ByVal rec As Rectangle, ByVal Color As Color) ' 在图像内绘制矩形 Declare Sub ImageDrawRectangleLines(ByVal dst As Image Ptr, ByVal rec As Rectangle, ByVal thick As Integer, ByVal Color As Color) ' 在图像内绘制矩形的边框 Declare Sub ImageDrawTriangle(ByVal dst As Image Ptr, ByVal v1 As Vector2, ByVal v2 As Vector2, ByVal v3 As Vector2, ByVal Color As Color) ' 在图像内绘制三角形 Declare Sub ImageDrawTriangleEx(ByVal dst As Image Ptr, ByVal v1 As Vector2, ByVal v2 As Vector2, ByVal v3 As Vector2, ByVal c1 As Color, ByVal c2 As Color, ByVal c3 As Color) ' 在图像内绘制具有插值颜色的三角形 Declare Sub ImageDrawTriangleLines(ByVal dst As Image Ptr, ByVal v1 As Vector2, ByVal v2 As Vector2, ByVal v3 As Vector2, ByVal Color As Color) ' 在图像内绘制三角形的轮廓 Declare Sub ImageDrawTriangleFan(ByVal dst As Image Ptr, ByVal POINTS As Vector2 Ptr, ByVal pointCount As Integer, ByVal Color As Color) ' 在图像内绘制由点定义的三角形扇 (第一个顶点是中心) Declare Sub ImageDrawTriangleStrip(ByVal dst As Image Ptr, ByVal POINTS As Vector2 Ptr, ByVal pointCount As Integer, ByVal Color As Color) ' 在图像内绘制由点定义的三角形条 Declare Sub ImageDraw(ByVal dst As Image Ptr, ByVal src As Image, ByVal srcRec As Rectangle, ByVal dstRec As Rectangle, ByVal tint As Color) ' 在目标图像内绘制源图像 (对源图像应用色调) Declare Sub ImageDrawText(ByVal dst As Image Ptr, ByVal text As ZString Ptr, ByVal posX As Integer, ByVal posY As Integer, ByVal fontSize As Integer, ByVal Color As Color) ' 在图像 (目标) 内绘制文本 (使用默认字体) Declare Sub ImageDrawTextEx(ByVal dst As Image Ptr, ByVal font As Font, ByVal text As ZString Ptr, ByVal position As Vector2, ByVal fontSize As Single, ByVal spacing As Single, ByVal tint As Color) ' 在图像 (目标) 内绘制文本 (使用自定义精灵字体) 纹理加载函数 ' 注意: 这些函数需要访问 GPU Declare Function LoadTexture(ByVal fileName As ZString Ptr) As Texture2D ' 从文件将纹理加载到 GPU 内存 (VRAM) 中 Declare Function LoadTextureFromImage(ByVal image As Image) As Texture2D ' 从图像数据加载纹理 Declare Function LoadTextureCubemap(ByVal image As Image, ByVal layout As Integer) As TextureCubemap ' 从图像加载立方体纹理,支持多种图像立方体纹理布局 Declare Function LoadRenderTexture(ByVal Width As Integer, ByVal height As Integer) As RenderTexture2D ' 加载用于渲染的纹理 (帧缓冲区) Declare Function IsTextureValid(ByVal texture As Texture2D) As BOOLEAN ' 检查纹理是否有效 (已加载到 GPU 中) Declare Sub UnloadTexture(ByVal texture As Texture2D) ' 从 GPU 内存 (VRAM) 中卸载纹理 Declare Function IsRenderTextureValid(ByVal target As RenderTexture2D) As BOOLEAN ' 检查渲染纹理是否有效 (已加载到 GPU 中) Declare Sub UnloadRenderTexture(ByVal target As RenderTexture2D) ' 从 GPU 内存 (VRAM) 中卸载渲染纹理 Declare Sub UpdateTexture(ByVal texture As Texture2D, ByVal pixels As Any Ptr) ' 用新数据更新 GPU 纹理 Declare Sub UpdateTextureRec(ByVal texture As Texture2D, ByVal rec As Rectangle, ByVal pixels As Any Ptr) ' 用新数据更新 GPU 纹理的指定矩形区域 纹理配置函数 Declare Sub GenTextureMipmaps(ByVal texture As Texture2D Ptr) ' 为纹理生成 GPU mipmap Declare Sub SetTextureFilter(ByVal texture As Texture2D, ByVal filter As Integer) ' 设置纹理缩放过滤模式 Declare Sub SetTextureWrap(ByVal texture As Texture2D, ByVal wrap As Integer) ' 设置纹理环绕模式 纹理绘制函数 Declare Sub DrawTexture(ByVal texture As Texture2D, ByVal posX As Integer, ByVal posY As Integer, ByVal tint As Color) ' 绘制一个 Texture2D Declare Sub DrawTextureV(ByVal texture As Texture2D, ByVal position As Vector2, ByVal tint As Color) ' 以 Vector2 定义的位置绘制一个 Texture2D Declare Sub DrawTextureEx(ByVal texture As Texture2D, ByVal position As Vector2, ByVal rotation As Single, ByVal scale As Single, ByVal tint As Color) ' 以扩展参数绘制一个 Texture2D Declare Sub DrawTextureRec(ByVal texture As Texture2D, ByVal source As Rectangle, ByVal position As Vector2, ByVal tint As Color) ' 绘制由矩形定义的纹理的一部分 Declare Sub DrawTexturePro(ByVal texture As Texture2D, ByVal source As Rectangle, ByVal dest As Rectangle, ByVal origin As Vector2, ByVal rotation As Single, ByVal tint As Color) ' 以“专业”参数绘制由矩形定义的纹理的一部分 Declare Sub DrawTextureNPatch(ByVal texture As Texture2D, ByVal nPatchInfo As NPatchInfo, ByVal dest As Rectangle, ByVal origin As Vector2, ByVal rotation As Single, ByVal tint As Color) ' 绘制一个纹理(或其一部分),该纹理可以很好地拉伸或收缩 颜色/像素相关函数 Declare Function ColorIsEqual(ByVal col1 As Color, ByVal col2 As Color) As Boolean ' 检查两种颜色是否相等 Declare Function Fade(ByVal Color As Color, ByVal Alpha As Single) As Color ' 获取应用了透明度的颜色,透明度范围从 0.0f 到 1.0f Declare Function ColorToInt(ByVal Color As Color) As Integer ' 获取颜色的十六进制值 (0xRRGGBBAA) Declare Function ColorNormalize(ByVal Color As Color) As Vector4 ' 获取颜色的归一化浮点值 [0..1] Declare Function ColorFromNormalized(ByVal normalized As Vector4) As Color ' 从归一化值 [0..1] 获取颜色 Declare Function ColorToHSV(ByVal Color As Color) As Vector3 ' 获取颜色的 HSV 值,色相 [0..360],饱和度/明度 [0..1] Declare Function ColorFromHSV(ByVal hue As Single, ByVal saturation As Single, ByVal value As Single) As Color ' 从 HSV 值获取颜色,色相 [0..360],饱和度/明度 [0..1] Declare Function ColorTint(ByVal Color As Color, ByVal tint As Color) As Color ' 获取与另一种颜色相乘后的颜色 Declare Function ColorBrightness(ByVal Color As Color, ByVal factor As Single) As Color ' 获取经过亮度校正的颜色,亮度因子范围从 -1.0f 到 1.0f Declare Function ColorContrast(ByVal Color As Color, ByVal contrast As Single) As Color ' 获取经过对比度校正的颜色,对比度值在 -1.0f 和 1.0f 之间 Declare Function ColorAlpha(ByVal Color As Color, ByVal Alpha As Single) As Color ' 获取应用了透明度的颜色,透明度范围从 0.0f 到 1.0f Declare Function ColorAlphaBlend(ByVal dst As Color, ByVal src As Color, ByVal tint As Color) As Color ' 获取源颜色以指定色调与目标颜色进行 alpha 混合后的颜色 Declare Function ColorLerp(ByVal color1 As Color, ByVal color2 As Color, ByVal factor As Single) As Color ' 获取两种颜色之间的线性插值颜色,插值因子 [0.0f..1.0f] Declare Function GetColor(ByVal hexValue As UInteger) As Color ' 从十六进制值获取颜色结构 Declare Function GetPixelColor(ByVal srcPtr As Any Ptr, ByVal Format As Integer) As Color ' 从指定格式的源像素指针获取颜色 Declare Sub SetPixelColor(ByVal dstPtr As Any Ptr, ByVal color As Color, ByVal format As Integer) ' 将格式化的颜色设置到目标像素指针 Declare Function GetPixelDataSize(ByVal Width As Integer, ByVal height As Integer, ByVal Format As Integer) As Integer ' 获取指定格式的像素数据大小(以字节为单位) 字体加载/卸载函数 Declare Function GetFontDefault() As Font ' 获取默认字体 Declare Function LoadFont(ByVal fileName As ZString Ptr) As Font ' 从文件将字体加载到 GPU 内存 (VRAM) 中 Declare Function LoadFontEx(ByVal fileName As ZString Ptr, ByVal fontSize As Integer, ByVal codepoints As Integer Ptr, ByVal codepointCount As Integer) As Font ' 从文件以扩展参数加载字体,若 codepoints 为 NULL 且 codepointCount 为 0 则加载默认字符集,字体大小以像素高度提供 Declare Function LoadFontFromImage(ByVal image As Image, ByVal key As Color, ByVal firstChar As Integer) As Font ' 从图像加载字体 (XNA 风格) Declare Function LoadFontFromMemory(ByVal fileType As ZString Ptr, ByVal fileData As UByte Ptr, ByVal dataSize As Integer, ByVal fontSize As Integer, ByVal codepoints As Integer Ptr, ByVal codepointCount As Integer) As Font ' 从内存缓冲区加载字体,fileType 指文件扩展名,如 '.ttf' Declare Function IsFontValid(ByVal font As Font) As Boolean ' 检查字体是否有效 (字体数据已加载,警告: 未检查 GPU 纹理) Declare Function LoadFontData(ByVal fileData As UByte Ptr, ByVal dataSize As Integer, ByVal fontSize As Integer, ByVal codepoints As Integer Ptr, ByVal codepointCount As Integer, ByVal Type As Integer) As GlyphInfo Ptr ' 加载字体数据以供后续使用 Declare Function GenImageFontAtlas(ByVal glyphs As GlyphInfo Ptr, ByVal glyphRecs As Rectangle Ptr Ptr, ByVal glyphCount As Integer, ByVal fontSize As Integer, ByVal padding As Integer, ByVal packMethod As Integer) As Image ' 使用字符信息生成图像字体图集 Declare Sub UnloadFontData(ByVal glyphs As GlyphInfo Ptr, ByVal glyphCount As Integer) ' 卸载字体字符信息数据 (RAM) Declare Sub UnloadFont(ByVal font As Font) ' 从 GPU 内存 (VRAM) 中卸载字体 Declare Function ExportFontAsCode(ByVal font As Font, ByVal fileName As ZString Ptr) As Boolean ' 将字体导出为代码文件,成功返回 True 文本绘制函数 Declare Sub DrawFPS(ByVal posX As Integer, ByVal posY As Integer) ' 绘制当前帧率(FPS) Declare Sub DrawText(ByVal text As ZString Ptr, ByVal posX As Integer, ByVal posY As Integer, ByVal fontSize As Integer, ByVal color As Color) ' 绘制文本(使用默认字体) Declare Sub DrawTextEx(ByVal font As Font, ByVal text As ZString Ptr, ByVal position As Vector2, ByVal fontSize As Single, ByVal spacing As Single, ByVal tint As Color) ' 使用字体和额外参数绘制文本 Declare Sub DrawTextPro(ByVal font As Font, ByVal text As ZString Ptr, ByVal position As Vector2, ByVal origin As Vector2, ByVal rotation As Single, ByVal fontSize As Single, ByVal spacing As Single, ByVal tint As Color) ' 使用字体和专业参数(旋转)绘制文本 Declare Sub DrawTextCodepoint(ByVal font As Font, ByVal codepoint As Integer, ByVal position As Vector2, ByVal fontSize As Single, ByVal tint As Color) ' 绘制一个字符(代码点) Declare Sub DrawTextCodepoints(ByVal font As Font, ByVal codepoints As Integer Ptr, ByVal codepointCount As Integer, ByVal position As Vector2, ByVal fontSize As Single, ByVal spacing As Single, ByVal tint As Color) ' 绘制多个字符(代码点) 文本字体信息函数 Declare Sub SetTextLineSpacing(ByVal spacing As Integer) ' 设置绘制带换行文本时的垂直行间距 Declare Function MeasureText(ByVal text As ZString Ptr, ByVal fontSize As Integer) As Integer ' 测量默认字体下字符串的宽度 Declare Function MeasureTextEx(ByVal font As Font, ByVal text As ZString Ptr, ByVal fontSize As Single, ByVal spacing As Single) As Vector2 ' 测量指定字体下字符串的尺寸 Declare Function GetGlyphIndex(ByVal font As Font, ByVal codepoint As Integer) As Integer ' 获取指定代码点(Unicode 字符)在字体中的字形索引位置,若未找到则回退到 '?' Declare Function GetGlyphInfo(ByVal font As Font, ByVal codepoint As Integer) As GlyphInfo ' 获取指定代码点(Unicode 字符)的字形字体信息数据,若未找到则回退到 '?' Declare Function GetGlyphAtlasRec(ByVal font As Font, ByVal codepoint As Integer) As Rectangle ' 获取指定代码点(Unicode 字符)在字体图集中的字形矩形,若未找到则回退到 '?' 文本代码点管理函数 (Unicode 字符) Declare Function LoadUTF8(ByVal codepoints As Integer Ptr, ByVal length As Integer) As ZString Ptr ' 从代码点数组加载 UTF - 8 编码的文本 Declare Sub UnloadUTF8(ByVal text As ZString Ptr) ' 卸载从代码点数组编码的 UTF - 8 文本 Declare Function LoadCodepoints(ByVal text As ZString Ptr, ByVal count As Integer Ptr) As Integer Ptr ' 从 UTF - 8 文本字符串加载所有代码点,代码点数量通过参数返回 Declare Sub UnloadCodepoints(ByVal codepoints As Integer Ptr) ' 从内存中卸载代码点数据 Declare Function GetCodepointCount(ByVal text As ZString Ptr) As Integer ' 获取 UTF - 8 编码字符串中的代码点总数 Declare Function GetCodepoint(ByVal text As ZString Ptr, ByVal codepointSize As Integer Ptr) As Integer ' 获取 UTF - 8 编码字符串中的下一个代码点,失败时返回 0x3f('?') Declare Function GetCodepointNext(ByVal text As ZString Ptr, ByVal codepointSize As Integer Ptr) As Integer ' 获取 UTF - 8 编码字符串中的下一个代码点,失败时返回 0x3f('?') Declare Function GetCodepointPrevious(ByVal text As ZString Ptr, ByVal codepointSize As Integer Ptr) As Integer ' 获取 UTF - 8 编码字符串中的上一个代码点,失败时返回 0x3f('?') Declare Function CodepointToUTF8(ByVal codepoint As Integer, ByVal utf8Size As Integer Ptr) As ZString Ptr ' 将一个代码点编码为 UTF - 8 字节数组(数组长度作为参数返回) 文本字符串管理函数 (非 UTF - 8 字符串,仅字节字符) ' 警告 1: 这些函数大多使用内部静态缓冲区,建议在用户端存储返回的数据以供重用 ' 警告 2: 一些字符串函数会为返回的字符串内部分配内存,这些字符串必须由用户使用 MemFree() 释放 Declare Function TextCopy(ByVal dst As ZString Ptr, ByVal src As ZString Ptr) As Integer ' 将一个字符串复制到另一个字符串,返回复制的字节数 Declare Function TextIsEqual(ByVal text1 As ZString Ptr, ByVal text2 As ZString Ptr) As Boolean ' 检查两个文本字符串是否相等 Declare Function TextLength(ByVal text As ZString Ptr) As UInteger ' 获取文本长度,检查 '\0' 结尾 Declare Function TextFormat(ByVal text As ZString Ptr, ...) As ZString Ptr ' 用变量进行文本格式化 (sprintf() 风格) Declare Function TextSubtext(ByVal text As ZString Ptr, ByVal position As Integer, ByVal length As Integer) As ZString Ptr ' 获取文本字符串的一部分 Declare Function TextReplace(ByVal text As ZString Ptr, ByVal replace As ZString Ptr, ByVal by As ZString Ptr) As ZString Ptr ' 替换文本字符串 (警告: 必须释放内存!) Declare Function TextInsert(ByVal text As ZString Ptr, ByVal insert As ZString Ptr, ByVal position As Integer) As ZString Ptr ' 在指定位置插入文本 (警告: 必须释放内存!) Declare Function TextJoin(ByVal textList As ZString Ptr Ptr, ByVal count As Integer, ByVal delimiter As ZString Ptr) As ZString Ptr ' 用分隔符连接文本字符串 Declare Function TextSplit(ByVal text As ZString Ptr, ByVal delimiter As ZString Ptr, ByVal count As Integer Ptr) As ZString Ptr Ptr ' 将文本拆分为多个字符串 Declare Sub TextAppend(ByVal text As ZString Ptr, ByVal Append As ZString Ptr, ByVal position As Integer Ptr) ' 在特定位置追加文本并移动光标! Declare Function TextFindIndex(ByVal text As ZString Ptr, ByVal find As ZString Ptr) As Integer ' 在字符串中查找文本首次出现的位置 Declare Function TextToUpper(ByVal text As ZString Ptr) As ZString Ptr ' 获取提供字符串的大写版本 Declare Function TextToLower(ByVal text As ZString Ptr) As ZString Ptr ' 获取提供字符串的小写版本 Declare Function TextToPascal(ByVal text As ZString Ptr) As ZString Ptr ' 获取提供字符串的帕斯卡命名法版本 Declare Function TextToSnake(ByVal text As ZString Ptr) As ZString Ptr ' 获取提供字符串的蛇形命名法版本 Declare Function TextToCamel(ByVal text As ZString Ptr) As ZString Ptr ' 获取提供字符串的驼峰命名法版本 Declare Function TextToInteger(ByVal text As ZString Ptr) As Integer ' 从文本中获取整数值 Declare Function TextToFloat(ByVal text As ZString Ptr) As Single ' 从文本中获取浮点数值 基本几何 3D 形状绘制函数 Declare Sub DrawLine3D(ByVal startPos As Vector3, ByVal endPos As Vector3, ByVal Color As Color) ' 在 3D 世界空间中绘制一条直线 Declare Sub DrawPoint3D(ByVal position As Vector3, ByVal Color As Color) ' 在 3D 空间中绘制一个点,实际上是一条小线段 Declare Sub DrawCircle3D(ByVal center As Vector3, ByVal radius As Single, ByVal rotationAxis As Vector3, ByVal rotationAngle As Single, ByVal Color As Color) ' 在 3D 世界空间中绘制一个圆 Declare Sub DrawTriangle3D(ByVal v1 As Vector3, ByVal v2 As Vector3, ByVal v3 As Vector3, ByVal color As Color) ' 绘制一个填充颜色的三角形(顶点按逆时针顺序!) Declare Sub DrawTriangleStrip3D(ByVal POINTS As Vector3 Ptr, ByVal pointCount As Integer, ByVal Color As Color) ' 绘制由点定义的三角形条带 Declare Sub DrawCube(ByVal position As Vector3, ByVal Width As Single, ByVal height As Single, ByVal length As Single, ByVal Color As Color) ' 绘制立方体 Declare Sub DrawCubeV(ByVal position As Vector3, ByVal SIZE As Vector3, ByVal Color As Color) ' 绘制立方体(向量版本) Declare Sub DrawCubeWires(ByVal position As Vector3, ByVal Width As Single, ByVal height As Single, ByVal length As Single, ByVal Color As Color) ' 绘制立方体的线框 Declare Sub DrawCubeWiresV(ByVal position As Vector3, ByVal SIZE As Vector3, ByVal Color As Color) ' 绘制立方体的线框(向量版本) Declare Sub DrawSphere(ByVal centerPos As Vector3, ByVal radius As Single, ByVal color As Color) ' 绘制球体 Declare Sub DrawSphereEx(ByVal centerPos As Vector3, ByVal radius As Single, ByVal rings As Integer, ByVal slices As Integer, ByVal color As Color) ' 用扩展参数绘制球体 Declare Sub DrawSphereWires(ByVal centerPos As Vector3, ByVal radius As Single, ByVal rings As Integer, ByVal slices As Integer, ByVal Color As Color) ' 绘制球体的线框 Declare Sub DrawCylinder(ByVal position As Vector3, ByVal radiusTop As Single, ByVal radiusBottom As Single, ByVal height As Single, ByVal slices As Integer, ByVal color As Color) ' 绘制圆柱体/圆锥体 Declare Sub DrawCylinderEx(ByVal startPos As Vector3, ByVal endPos As Vector3, ByVal startRadius As Single, ByVal endRadius As Single, ByVal sides As Integer, ByVal Color As Color) ' 绘制一个圆柱体,底面在 startPos,顶面在 endPos Declare Sub DrawCylinderWires(ByVal position As Vector3, ByVal radiusTop As Single, ByVal radiusBottom As Single, ByVal height As Single, ByVal slices As Integer, ByVal color As Color) ' 绘制圆柱体/圆锥体的线框 Declare Sub DrawCylinderWiresEx(ByVal startPos As Vector3, ByVal endPos As Vector3, ByVal startRadius As Single, ByVal endRadius As Single, ByVal sides As Integer, ByVal color As Color) ' 绘制一个圆柱体的线框,底面在 startPos,顶面在 endPos Declare Sub DrawCapsule(ByVal startPos As Vector3, ByVal endPos As Vector3, ByVal radius As Single, ByVal slices As Integer, ByVal rings As Integer, ByVal color As Color) ' 绘制一个胶囊体,其球冠中心分别在 startPos 和 endPos Declare Sub DrawCapsuleWires(ByVal startPos As Vector3, ByVal endPos As Vector3, ByVal radius As Single, ByVal slices As Integer, ByVal rings As Integer, ByVal color As Color) ' 绘制胶囊体的线框,其球冠中心分别在 startPos 和 endPos Declare Sub DrawPlane(ByVal centerPos As Vector3, ByVal SIZE As Vector2, ByVal Color As Color) ' 绘制一个 XZ 平面 Declare Sub DrawRay(ByVal ray As Ray, ByVal color As Color) ' 绘制一条射线 Declare Sub DrawGrid(ByVal slices As Integer, ByVal spacing As Single) ' 绘制网格 模型管理函数 Declare Function LoadModel(ByVal fileName As ZString Ptr) As Model ' 从文件(网格和材质)加载模型 Declare Function LoadModelFromMesh(ByVal mesh As Mesh) As Model ' 从生成的网格加载模型(使用默认材质) Declare Function IsModelValid(ByVal model As Model) As BOOLEAN ' 检查模型是否有效(已加载到 GPU,包含 VAO/VBOs) Declare Sub UnloadModel(ByVal model As Model) ' 从内存(RAM 和/或 VRAM)中卸载模型(包括网格) Declare Function GetModelBoundingBox(ByVal model As Model) As BoundingBox ' 计算模型的边界框限制(考虑所有网格) 模型绘制函数 Declare Sub DrawModel(ByVal model As Model, ByVal position As Vector3, ByVal scale As Single, ByVal tint As Color) ' 绘制一个模型(若设置了纹理则带有纹理) Declare Sub DrawModelEx(ByVal model As Model, ByVal position As Vector3, ByVal rotationAxis As Vector3, ByVal rotationAngle As Single, ByVal scale As Vector3, ByVal tint As Color) ' 用扩展参数绘制一个模型 Declare Sub DrawModelWires(ByVal model As Model, ByVal position As Vector3, ByVal scale As Single, ByVal tint As Color) ' 绘制模型的线框(若设置了纹理则带有纹理) Declare Sub DrawModelWiresEx(ByVal model As Model, ByVal position As Vector3, ByVal rotationAxis As Vector3, ByVal rotationAngle As Single, ByVal scale As Vector3, ByVal tint As Color) ' 用扩展参数绘制模型的线框(若设置了纹理则带有纹理) Declare Sub DrawModelPoints(ByVal model As Model, ByVal position As Vector3, ByVal scale As Single, ByVal tint As Color) ' 将模型绘制为点 Declare Sub DrawModelPointsEx(ByVal model As Model, ByVal position As Vector3, ByVal rotationAxis As Vector3, ByVal rotationAngle As Single, ByVal scale As Vector3, ByVal tint As Color) ' 用扩展参数将模型绘制为点 Declare Sub DrawBoundingBox(ByVal box As BoundingBox, ByVal color As Color) ' 绘制边界框(线框) Declare Sub DrawBillboard(ByVal camera As Camera, ByVal texture As Texture2D, ByVal position As Vector3, ByVal scale As Single, ByVal tint As Color) ' 绘制一个公告牌纹理 Declare Sub DrawBillboardRec(ByVal camera As Camera, ByVal texture As Texture2D, ByVal source As Rectangle, ByVal position As Vector3, ByVal size As Vector2, ByVal tint As Color) ' 绘制由源矩形定义的公告牌纹理 Declare Sub DrawBillboardPro(ByVal camera As Camera, ByVal texture As Texture2D, ByVal source As Rectangle, ByVal position As Vector3, ByVal up As Vector3, ByVal SIZE As Vector2, ByVal origin As Vector2, ByVal rotation As Single, ByVal tint As Color) ' 绘制由源矩形和旋转定义的公告牌纹理 网格管理函数 Declare Sub UploadMesh(ByVal mesh As Mesh Ptr, ByVal dynamic As BOOLEAN) ' 将网格顶点数据上传到 GPU 并提供 VAO/VBO ID Declare Sub UpdateMeshBuffer(ByVal mesh As Mesh, ByVal index As Integer, ByVal Data As Any Ptr, ByVal dataSize As Integer, ByVal offset As Integer) ' 更新 GPU 中特定缓冲区索引的网格顶点数据 Declare Sub UnloadMesh(ByVal mesh As Mesh) ' 从 CPU 和 GPU 卸载网格数据 Declare Sub DrawMesh(ByVal mesh As Mesh, ByVal material As Material, ByVal transform As Matrix) ' 使用材质和变换绘制 3D 网格 Declare Sub DrawMeshInstanced(ByVal mesh As Mesh, ByVal material As Material, ByVal transforms As Matrix Ptr, ByVal instances As Integer) ' 使用材质和不同的变换绘制多个网格实例 Declare Function GetMeshBoundingBox(ByVal mesh As Mesh) As BoundingBox ' 计算网格的边界框限制 Declare Sub GenMeshTangents(ByVal mesh As Mesh Ptr) ' 计算网格的切线 Declare Function ExportMesh(ByVal mesh As Mesh, ByVal fileName As ZString Ptr) As BOOLEAN ' 将网格数据导出到文件,成功返回 True Declare Function ExportMeshAsCode(ByVal mesh As Mesh, ByVal fileName As ZString Ptr) As Boolean ' 将网格导出为定义多个顶点属性数组的代码文件 (.h) 网格生成函数 Declare Function GenMeshPoly(ByVal sides As Integer, ByVal radius As Single) As Mesh ' 生成多边形网格 Declare Function GenMeshPlane(ByVal Width As Single, ByVal length As Single, ByVal resX As Integer, ByVal resZ As Integer) As Mesh ' 生成平面网格(带细分) Declare Function GenMeshCube(ByVal Width As Single, ByVal height As Single, ByVal length As Single) As Mesh ' 生成长方体网格 Declare Function GenMeshSphere(ByVal radius As Single, ByVal rings As Integer, ByVal slices As Integer) As Mesh ' 生成球体网格(标准球体) Declare Function GenMeshHemiSphere(ByVal radius As Single, ByVal rings As Integer, ByVal slices As Integer) As Mesh ' 生成半球体网格(无底部面) Declare Function GenMeshCylinder(ByVal radius As Single, ByVal height As Single, ByVal slices As Integer) As Mesh ' 生成圆柱体网格 Declare Function GenMeshCone(ByVal radius As Single, ByVal height As Single, ByVal slices As Integer) As Mesh ' 生成圆锥/棱锥网格 Declare Function GenMeshTorus(ByVal radius As Single, ByVal SIZE As Single, ByVal radSeg As Integer, ByVal sides As Integer) As Mesh ' 生成圆环体网格 Declare Function GenMeshKnot(ByVal radius As Single, ByVal size As Single, ByVal radSeg As Integer, ByVal sides As Integer) As Mesh ' 生成三叶结网格 Declare Function GenMeshHeightmap(ByVal heightmap As Image, ByVal SIZE As Vector3) As Mesh ' 根据图像数据生成高度图网格 Declare Function GenMeshCubicmap(ByVal cubicmap As Image, ByVal cubeSize As Vector3) As Mesh ' 根据图像数据生成基于立方体的地图网格 材质加载/卸载函数 Declare Function LoadMaterials(ByVal fileName As ZString Ptr, ByVal materialCount As Integer Ptr) As Material Ptr ' 从模型文件加载材质 Declare Function LoadMaterialDefault() As Material ' 加载默认材质(支持:漫反射、高光、法线贴图) Declare Function IsMaterialValid(ByVal material As Material) As Boolean ' 检查材质是否有效(已分配着色器,贴图纹理已加载到 GPU) Declare Sub UnloadMaterial(ByVal material As Material) ' 从 GPU 内存(VRAM)卸载材质 Declare Sub SetMaterialTexture(ByVal material As Material Ptr, ByVal mapType As Integer, ByVal texture As Texture2D) ' 为材质的特定贴图类型(如 MATERIAL_MAP_DIFFUSE、MATERIAL_MAP_SPECULAR 等)设置纹理 Declare Sub SetModelMeshMaterial(ByVal model As Model Ptr, ByVal meshId As Integer, ByVal materialId As Integer) ' 为网格设置材质 模型动画加载/卸载函数 Declare Function LoadModelAnimations(ByVal fileName As ZString Ptr, ByVal animCount As Integer Ptr) As ModelAnimation Ptr ' 从文件加载模型动画 Declare Sub UpdateModelAnimation(ByVal model As Model, ByVal anim As ModelAnimation, ByVal frame As Integer) ' 更新模型动画姿势(CPU 端) Declare Sub UpdateModelAnimationBones(ByVal model As Model, ByVal anim As ModelAnimation, ByVal frame As Integer) ' 更新模型动画的网格骨骼矩阵(GPU 蒙皮) Declare Sub UnloadModelAnimation(ByVal anim As ModelAnimation) ' 卸载动画数据 Declare Sub UnloadModelAnimations(ByVal animations As ModelAnimation Ptr, ByVal animCount As Integer) ' 卸载动画数组数据 Declare Function IsModelAnimationValid(ByVal model As Model, ByVal anim As ModelAnimation) As Boolean ' 检查模型动画骨骼是否匹配 碰撞检测函数 Declare Function CheckCollisionSpheres(ByVal center1 As Vector3, ByVal radius1 As Single, ByVal center2 As Vector3, ByVal radius2 As Single) As Boolean ' 检查两个球体之间是否发生碰撞 Declare Function CheckCollisionBoxes(ByVal box1 As BoundingBox, ByVal box2 As BoundingBox) As Boolean ' 检查两个边界框之间是否发生碰撞 Declare Function CheckCollisionBoxSphere(ByVal box As BoundingBox, ByVal center As Vector3, ByVal radius As Single) As Boolean ' 检查边界框和球体之间是否发生碰撞 Declare Function GetRayCollisionSphere(ByVal ray As Ray, ByVal center As Vector3, ByVal radius As Single) As RayCollision ' 获取射线与球体的碰撞信息 Declare Function GetRayCollisionBox(ByVal ray As Ray, ByVal box As BoundingBox) As RayCollision ' 获取射线与边界框的碰撞信息 Declare Function GetRayCollisionMesh(ByVal ray As Ray, ByVal mesh As Mesh, ByVal transform As Matrix) As RayCollision ' 获取射线与网格的碰撞信息 Declare Function GetRayCollisionTriangle(ByVal ray As Ray, ByVal p1 As Vector3, ByVal p2 As Vector3, ByVal p3 As Vector3) As RayCollision ' 获取射线与三角形的碰撞信息 Declare Function GetRayCollisionQuad(ByVal ray As Ray, ByVal p1 As Vector3, ByVal p2 As Vector3, ByVal p3 As Vector3, ByVal p4 As Vector3) As RayCollision ' 获取射线与四边形的碰撞信息 音频设备管理函数 Declare Sub InitAudioDevice() ' 初始化音频设备和上下文 Declare Sub CloseAudioDevice() ' 关闭音频设备和上下文 Declare Function IsAudioDeviceReady() As Boolean ' 检查音频设备是否已成功初始化 Declare Sub SetMasterVolume(ByVal volume As Single) ' 设置主音量(监听者) Declare Function GetMasterVolume() As Single ' 获取主音量(监听者) 波形/声音加载/卸载函数 Declare Function LoadWave(ByVal fileName As ZString Ptr) As Wave ' 从文件加载波形数据 Declare Function LoadWaveFromMemory(ByVal fileType As ZString Ptr, ByVal fileData As UByte Ptr, ByVal dataSize As Integer) As Wave ' 从内存缓冲区加载波形,fileType 指文件扩展名,如 '.wav' Declare Function IsWaveValid(ByVal wave As Wave) As BOOLEAN ' 检查波形数据是否有效(数据已加载且参数正确) Declare Function LoadSound(ByVal fileName As ZString Ptr) As Sound ' 从文件加载声音 Declare Function LoadSoundFromWave(ByVal wave As Wave) As Sound ' 从波形数据加载声音 Declare Function LoadSoundAlias(ByVal source As Sound) As Sound ' 创建一个新声音,该声音与源声音共享相同的样本数据,不拥有声音数据 Declare Function IsSoundValid(ByVal sound As Sound) As Boolean ' 检查声音是否有效(数据已加载且缓冲区已初始化) Declare Sub UpdateSound(ByVal sound As Sound, ByVal data As Any Ptr, ByVal sampleCount As Integer) ' 用新数据更新声音缓冲区 Declare Sub UnloadWave(ByVal wave As Wave) ' 卸载波形数据 Declare Sub UnloadSound(ByVal sound As Sound) ' 卸载声音 Declare Sub UnloadSoundAlias(ByVal alias As Sound) ' 卸载声音别名(不释放样本数据) Declare Function ExportWave(ByVal wave As Wave, ByVal fileName As ZString Ptr) As Boolean ' 将波形数据导出到文件,成功返回 True Declare Function ExportWaveAsCode(ByVal wave As Wave, ByVal fileName As ZString Ptr) As Boolean ' 将波形样本数据导出到代码文件 (.h),成功返回 True 波形/声音管理函数 Declare Sub PlaySound(ByVal sound As Sound) ' 播放一个声音 Declare Sub StopSound(ByVal sound As Sound) ' 停止播放一个声音 Declare Sub PauseSound(ByVal sound As Sound) ' 暂停一个声音 Declare Sub ResumeSound(ByVal sound As Sound) ' 恢复暂停的声音 Declare Function IsSoundPlaying(ByVal sound As Sound) As Boolean ' 检查一个声音当前是否正在播放 Declare Sub SetSoundVolume(ByVal sound As Sound, ByVal volume As Single) ' 设置一个声音的音量(1.0 为最大级别) Declare Sub SetSoundPitch(ByVal sound As Sound, ByVal pitch As Single) ' 设置一个声音的音高(1.0 为基础级别) Declare Sub SetSoundPan(ByVal sound As Sound, ByVal pan As Single) ' 设置一个声音的声像(0.5 为中心) Declare Function WaveCopy(ByVal wave As Wave) As Wave ' 将一个波形复制到一个新的波形 Declare Sub WaveCrop(ByVal wave As Wave Ptr, ByVal initFrame As Integer, ByVal finalFrame As Integer) ' 将一个波形裁剪到指定的帧范围 Declare Sub WAVEFORMAT(ByVal wave As Wave Ptr, ByVal sampleRate As Integer, ByVal sampleSize As Integer, ByVal channels As Integer) ' 将波形数据转换为所需的格式 Declare Function LoadWaveSamples(ByVal wave As Wave) As Single Ptr ' 从波形中加载样本数据作为 32 位浮点数据数组 Declare Sub UnloadWaveSamples(ByVal samples As Single Ptr) ' 卸载使用 LoadWaveSamples() 加载的样本数据 音乐管理函数 Declare Function LoadMusicStream(ByVal fileName As ZString Ptr) As Music ' 从文件加载音乐流 Declare Function LoadMusicStreamFromMemory(ByVal fileType As ZString Ptr, ByVal Data As UByte Ptr, ByVal dataSize As Integer) As Music ' 从数据加载音乐流 Declare Function IsMusicValid(ByVal music As Music) As Boolean ' 检查音乐流是否有效(上下文和缓冲区已初始化) Declare Sub UnloadMusicStream(ByVal music As Music) ' 卸载音乐流 Declare Sub PlayMusicStream(ByVal music As Music) ' 开始播放音乐 Declare Function IsMusicStreamPlaying(ByVal music As Music) As Boolean ' 检查音乐是否正在播放 Declare Sub UpdateMusicStream(ByVal music As Music) ' 更新音乐流的缓冲区 Declare Sub StopMusicStream(ByVal music As Music) ' 停止播放音乐 Declare Sub PauseMusicStream(ByVal music As Music) ' 暂停播放音乐 Declare Sub ResumeMusicStream(ByVal music As Music) ' 恢复播放暂停的音乐 Declare Sub SeekMusicStream(ByVal music As Music, ByVal position As Single) ' 将音乐定位到指定位置(以秒为单位) Declare Sub SetMusicVolume(ByVal music As Music, ByVal volume As Single) ' 设置音乐的音量(1.0 为最大级别) Declare Sub SetMusicPitch(ByVal music As Music, ByVal pitch As Single) ' 设置音乐的音高(1.0 为基础级别) Declare Sub SetMusicPan(ByVal music As Music, ByVal pan As Single) ' 设置音乐的声像(0.5 为中心) Declare Function GetMusicTimeLength(ByVal music As Music) As Single ' 获取音乐的总时长(以秒为单位) Declare Function GetMusicTimePlayed(ByVal music As Music) As Single ' 获取当前音乐已播放的时长(以秒为单位) 音频流管理函数 Declare Function LoadAudioStream(ByVal sampleRate As UInteger, ByVal sampleSize As UInteger, ByVal channels As UInteger) As AudioStream ' 加载音频流(用于流式传输原始音频 PCM 数据) Declare Function IsAudioStreamValid(ByVal stream As AudioStream) As Boolean ' 检查音频流是否有效(缓冲区已初始化) Declare Sub UnloadAudioStream(ByVal stream As AudioStream) ' 卸载音频流并释放内存 Declare Sub UpdateAudioStream(ByVal stream As AudioStream, ByVal data As Any Ptr, ByVal frameCount As Integer) ' 用数据更新音频流缓冲区 Declare Function IsAudioStreamProcessed(ByVal stream As AudioStream) As Boolean ' 检查是否有音频流缓冲区需要重新填充 Declare Sub PlayAudioStream(ByVal stream As AudioStream) ' 播放音频流 Declare Sub PauseAudioStream(ByVal stream As AudioStream) ' 暂停音频流 Declare Sub ResumeAudioStream(ByVal stream As AudioStream) ' 恢复音频流 Declare Function IsAudioStreamPlaying(ByVal stream As AudioStream) As Boolean ' 检查音频流是否正在播放 Declare Sub StopAudioStream(ByVal stream As AudioStream) ' 停止音频流 Declare Sub SetAudioStreamVolume(ByVal stream As AudioStream, ByVal volume As Single) ' 设置音频流的音量(1.0 为最大级别) Declare Sub SetAudioStreamPitch(ByVal stream As AudioStream, ByVal pitch As Single) ' 设置音频流的音高(1.0 为基础级别) Declare Sub SetAudioStreamPan(ByVal stream As AudioStream, ByVal pan As Single) ' 设置音频流的声像(0.5 为中心) Declare Sub SetAudioStreamBufferSizeDefault(ByVal size As Integer) ' 设置新音频流的默认缓冲区大小 Declare Sub SetAudioStreamCallback(ByVal stream As AudioStream, ByVal callback As AudioCallback) ' 设置音频线程回调以请求新数据 Declare Sub AttachAudioStreamProcessor(ByVal stream As AudioStream, ByVal processor As AudioCallback) ' 将音频流处理器附加到音频流,接收帧 x 2 个样本作为 'float'(立体声) Declare Sub DetachAudioStreamProcessor(ByVal stream As AudioStream, ByVal processor As AudioCallback) ' 从音频流中分离音频流处理器 Declare Sub AttachAudioMixedProcessor(ByVal processor As AudioCallback) ' 将音频流处理器附加到整个音频管道,接收帧 x 2 个样本作为 'float'(立体声) Declare Sub DetachAudioMixedProcessor(ByVal processor As AudioCallback) ' 从整个音频管道中分离音频流处理器 支持多种相机模式的基本相机系统 Declare Function GetCameraForward(ByVal Camera As Camera Ptr) As Vector3 '返回相机前向矢量(归一化) Declare Function GetCameraUp(ByVal Camera As Camera Ptr) As Vector3 '返回相机上方向矢量(归一化)注意:向上矢量可能不垂直于向前矢量 Declare Function GetCameraRight(ByVal Camera As Camera Ptr) As Vector3 '返回相机右向量(归一化) Declare Sub CameraMoveForward(ByVal Camera As Camera Ptr, ByVal distance As Single, ByVal moveInWorldPlane As BOOL) '向前移动相机 Declare Sub CameraMoveUp(ByVal Camera As Camera Ptr, ByVal distance As Single) '向上移动相机 Declare Sub CameraMoveRight(ByVal Camera As Camera Ptr, ByVal distance As Single, ByVal moveInWorldPlane As BOOL) '在当前右侧方向上移动相机目标 Declare Sub CameraMoveToTarget(ByVal Camera As Camera Ptr, ByVal delta As Single) '将相机位置移动到离相机目标较近/较远的位置 Declare Sub CameraYaw(ByVal Camera As Camera Ptr, ByVal angle As Single, ByVal rotateAroundTarget As BOOL) '围绕相机的上方向向量旋转相机 //偏航是“左右看”//如果rotateRoundTarget为false,则摄影机将围绕其位置旋转//注意:角度必须以弧度为单位 Declare Sub CameraPitch(ByVal Camera As Camera Ptr, ByVal angle As Single, ByVal lockView As BOOL, ByVal rotateAroundTarget As BOOL, ByVal rotateUp As BOOL) '围绕其右矢量旋转相机,俯仰为“上下观察”//-lockView可防止相机过度旋转(也称为“空翻”)//-rotateRoundTarget定义旋转是围绕目标还是围绕其位置//-rotateUp也向上旋转方向(通常仅在CAMERA_FREE中使用full)//注:角度必须以弧度为单位 Declare Sub CameraRoll(ByVal Camera As Camera Ptr, ByVal angle As Single) '围绕相机的前向矢量旋转相机//翻滚是“将你的头侧向左侧或右侧”//注意:角度必须以弧度为单位 Declare Function GetCameraViewMatrix(ByVal Camera As Camera Ptr) As Matrix '返回相机视图矩阵 Declare Function GetCameraProjectionMatrix(ByVal Camera As Camera Ptr, ByVal aspect As Single) As Matrix '返回相机投影矩阵 矩阵 Declare Sub rlMatrixMode (ByVal mode As Integer) ' 选择当前要进行变换的矩阵 Declare Sub rlPushMatrix () ' 将当前矩阵压入栈中 Declare Sub rlPopMatrix () ' 从栈中弹出最近压入的矩阵 Declare Sub rlLoadIdentity () ' 将当前矩阵重置为单位矩阵 Declare Sub rlTranslatef (ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 用一个平移矩阵乘以当前矩阵 Declare Sub rlRotatef (ByVal angle As Single, ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 用一个旋转矩阵乘以当前矩阵 Declare Sub rlScalef (ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 用一个缩放矩阵乘以当前矩阵 Declare Sub rlMultMatrixf (ByVal matf As Single Ptr) ' 用另一个矩阵乘以当前矩阵 Declare Sub rlFrustum (ByVal Left As Double, ByVal Right As Double, ByVal bottom As Double, ByVal top As Double, ByVal znear As Double, ByVal zfar As Double) ' 定义透视投影的视锥体 Declare Sub rlOrtho (ByVal Left As Double, ByVal Right As Double, ByVal bottom As Double, ByVal top As Double, ByVal znear As Double, ByVal zfar As Double) ' 定义正交投影的视锥体 Declare Sub rlViewport (ByVal x As Integer, ByVal y As Integer, ByVal Width As Integer, ByVal height As Integer) ' 设置视口区域 Declare Sub rlSetClipPlanes (ByVal nearPlane As Double, ByVal farPlane As Double) ' 设置裁剪平面的距离 Declare Function rlGetCullDistanceNear () As Double ' 获取近裁剪平面的距离 Declare Function rlGetCullDistanceFar () As Double ' 获取远裁剪平面的距离 顶点级操作 '//------------------------------------------------------------------------------------ Declare Sub rlBegin(ByVal mode As Integer) ' 初始化绘图模式(如何组织顶点) ''mode 说明: ''RL_LINES 每两个顶点会被连接成一条线段。例如,传入四个顶点 (x1, y1, z1)、(x2, y2, z2)、(x3, y3, z3) 和 (x4, y4, z4),就会绘制两条线段,分别是连接 (x1, y1, z1) 和 (x2, y2, z2) 的线段,以及连接 (x3, y3, z3) 和 (x4, y4, z4) 的线段。 ''RL_TRIANGLES 每三个顶点会构成一个三角形。若传入六个顶点,就会绘制两个三角形。 ''RL_QUADS 每四个顶点会被组合成一个四边形。如果提供了多于四个的顶点,将按照每四个一组依次绘制多个四边形。 Declare Sub rlEnd () ' 结束顶点提供 Declare Sub rlVertex2i (ByVal x As Integer, ByVal y As Integer) ' 定义一个顶点(位置) - 2 个整数 Declare Sub rlVertex2f (ByVal x As Single, ByVal y As Single) ' 定义一个顶点(位置) - 2 个单精度浮点数 Declare Sub rlVertex3f (ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 定义一个顶点(位置) - 3 个单精度浮点数 Declare Sub rlTexCoord2f (ByVal x As Single, ByVal y As Single) ' 定义一个顶点(纹理坐标) - 2 个单精度浮点数 Declare Sub rlNormal3f (ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 定义一个顶点(法线) - 3 个单精度浮点数 Declare Sub rlColor4ub (ByVal r As UByte, ByVal g As UByte, ByVal b As UByte, ByVal a As UByte) ' 定义一个顶点(颜色) - 4 个无符号字节 Declare Sub rlColor3f (ByVal x As Single, ByVal y As Single, ByVal z As Single) ' 定义一个顶点(颜色) - 3 个单精度浮点数 Declare Sub rlColor4f (ByVal x As Single, ByVal y As Single, ByVal z As Single, ByVal w As Single) ' 定义一个顶点(颜色) - 4 个单精度浮点数 顶点缓冲区状态 Declare Function rlEnableVertexArray (ByVal vaoId As UInteger) As BOOLEAN ' 启用顶点数组(如果支持 VAO) Declare Sub rlDisableVertexArray () ' 禁用顶点数组(如果支持 VAO) Declare Sub rlEnableVertexBuffer (ByVal id As UInteger) ' 启用顶点缓冲区(VBO) Declare Sub rlDisableVertexBuffer () ' 禁用顶点缓冲区(VBO) Declare Sub rlEnableVertexBufferElement (ByVal id As UInteger) ' 启用顶点缓冲区元素(VBO 元素) Declare Sub rlDisableVertexBufferElement () ' 禁用顶点缓冲区元素(VBO 元素) Declare Sub rlEnableVertexAttribute (ByVal index As UInteger) ' 启用顶点属性索引 Declare Sub rlDisableVertexAttribute (ByVal index As UInteger) ' 禁用顶点属性索引 纹理状态 Declare Sub rlActiveTextureSlot (ByVal slot As Integer) ' 选择并激活一个纹理插槽 Declare Sub rlEnableTexture (ByVal id As UInteger) ' 启用纹理 Declare Sub rlDisableTexture () ' 禁用纹理 Declare Sub rlEnableTextureCubemap (ByVal id As UInteger) ' 启用立方体纹理 Declare Sub rlDisableTextureCubemap () ' 禁用立方体纹理 Declare Sub rlTextureParameters (ByVal id As UInteger, ByVal param As Integer, ByVal value As Integer) ' 设置纹理参数(过滤、环绕模式) Declare Sub rlCubemapParameters(ByVal id As UInteger, ByVal param As Integer, ByVal value As Integer) ' 设置立方体纹理参数(过滤、环绕模式) 着色器状态 Declare Sub rlEnableShader (ByVal id As UInteger) ' 启用着色器程序 Declare Sub rlDisableShader () ' 禁用着色器程序 帧缓冲区状态 Declare Sub rlEnableFramebuffer (ByVal id As UInteger) ' 启用渲染纹理(帧缓冲对象 FBO) Declare Sub rlDisableFramebuffer () ' 禁用渲染纹理(FBO),返回默认帧缓冲区 Declare Function rlGetActiveFramebuffer () As UInteger ' 获取当前活动的渲染纹理(FBO),0 表示默认帧缓冲区 Declare Sub rlActiveDrawBuffers (ByVal count As Integer) ' 激活多个绘制颜色缓冲区 Declare Sub rlBlitFramebuffer (ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcWidth As Integer, ByVal srcHeight As Integer, ByVal dstX As Integer, ByVal dstY As Integer, ByVal dstWidth As Integer, ByVal dstHeight As Integer, ByVal bufferMask As Integer) ' 将活动帧缓冲区复制到主帧缓冲区 Declare Sub rlBindFramebuffer (ByVal target As UInteger, ByVal framebuffer As UInteger) ' 绑定帧缓冲区(FBO) 通用渲染状态 Declare Sub rlEnableColorBlend () ' 启用颜色混合 Declare Sub rlDisableColorBlend () ' 禁用颜色混合 Declare Sub rlEnableDepthTest () ' 启用深度测试 Declare Sub rlDisableDepthTest () ' 禁用深度测试 Declare Sub rlEnableDepthMask () ' 启用深度写入 Declare Sub rlDisableDepthMask () ' 禁用深度写入 Declare Sub rlEnableBackfaceCulling () ' 启用背面剔除 Declare Sub rlDisableBackfaceCulling () ' 禁用背面剔除 Declare Sub rlColorMask (ByVal r As Boolean, ByVal g As Boolean, ByVal b As Boolean, ByVal a As Boolean) ' 颜色掩码控制 Declare Sub rlSetCullFace (ByVal mode As Integer) ' 设置面剔除模式 Declare Sub rlEnableScissorTest () ' 启用裁剪测试 Declare Sub rlDisableScissorTest () ' 禁用裁剪测试 Declare Sub rlScissor (ByVal x As Integer, ByVal y As Integer, ByVal Width As Integer, ByVal height As Integer) ' 裁剪测试 Declare Sub rlEnablePointMode () ' 启用点模式 Declare Sub rlDisablePointMode () ' 禁用点模式 Declare Sub rlEnableWireMode () ' 启用线框模式 Declare Sub rlDisableWireMode () ' 禁用线框模式 Declare Sub rlSetLineWidth (ByVal Width As Single) ' 设置线条绘制宽度 Declare Function rlGetLineWidth () As Single ' 获取线条绘制宽度 Declare Sub rlEnableSmoothLines () ' 启用线条抗锯齿 Declare Sub rlDisableSmoothLines () ' 禁用线条抗锯齿 Declare Sub rlEnableStereoRender () ' 启用立体渲染 Declare Sub rlDisableStereoRender () ' 禁用立体渲染 Declare Function rlIsStereoRenderEnabled () As Boolean ' 检查是否启用了立体渲染 Declare Sub rlClearColor (ByVal r As Byte, ByVal g As Byte, ByVal b As Byte, ByVal a As Byte) ' 用指定颜色清除颜色缓冲区 Declare Sub rlClearScreenBuffers () ' 清除使用的屏幕缓冲区(颜色和深度) Declare Sub rlCheckErrors () ' 检查并记录 OpenGL 错误代码 Declare Sub rlSetBlendMode (ByVal mode As Integer) ' 设置混合模式 Declare Sub rlSetBlendFactors (ByVal glSrcFactor As Integer, ByVal glDstFactor As Integer, ByVal glEquation As Integer) ' 设置混合模式因子和方程(使用 OpenGL 因子) Declare Sub rlSetBlendFactorsSeparate (ByVal glSrcRGB As Integer, ByVal glDstRGB As Integer, ByVal glSrcAlpha As Integer, ByVal glDstAlpha As Integer, ByVal glEqRGB As Integer, ByVal glEqAlpha As Integer) ' 分别设置混合模式因子和方程(使用 OpenGL 因子) rlgl 初始化函数 Declare Sub rlglInit (ByVal width As Integer, ByVal height As Integer) ' 初始化 rlgl(缓冲区、着色器、纹理、状态) Declare Sub rlglClose () ' 反初始化 rlgl(缓冲区、着色器、纹理) Declare Sub rlLoadExtensions (ByVal loader As Any Ptr) ' 加载 OpenGL 扩展(需要加载器函数) Declare Function rlGetVersion () As Integer ' 获取当前 OpenGL 版本 Declare Sub rlSetFramebufferWidth (ByVal width As Integer) ' 设置当前帧缓冲区宽度 Declare Function rlGetFramebufferWidth () As Integer ' 获取默认帧缓冲区宽度 Declare Sub rlSetFramebufferHeight (ByVal height As Integer) ' 设置当前帧缓冲区高度 Declare Function rlGetFramebufferHeight () As Integer ' 获取默认帧缓冲区高度 Declare Function rlGetTextureIdDefault () As UInteger ' 获取默认纹理 ID Declare Function rlGetShaderIdDefault () As UInteger ' 获取默认着色器 ID Declare Function rlGetShaderLocsDefault () As Integer Ptr ' 获取默认着色器位置 渲染批次管理 ' 注意:rlgl 提供了一个默认的渲染批次,以实现类似 OpenGL 1.1 的立即模式 ' 但此渲染批次 API 是公开的,以防需要自定义批次 Declare Function rlLoadRenderBatch (ByVal numBuffers As Integer, ByVal bufferElements As Integer) As rlRenderBatch ' 加载一个渲染批次系统 Declare Sub rlUnloadRenderBatch (ByVal batch As rlRenderBatch) ' 卸载渲染批次系统 Declare Sub rlDrawRenderBatch (ByVal batch As rlRenderBatch Ptr) ' 绘制渲染批次数据(更新 -> 绘制 -> 重置) Declare Sub rlSetRenderBatchActive (ByVal batch As rlRenderBatch Ptr) ' 设置 rlgl 的活动渲染批次(NULL 表示使用默认内部批次) Declare Sub rlDrawRenderBatchActive () ' 更新并绘制内部渲染批次 Declare Function rlCheckRenderBatchLimit (ByVal vCount As Integer) As Boolean ' 检查给定顶点数量下的内部缓冲区溢出情况 Declare Sub rlSetTexture (ByVal id As UInteger) ' 为渲染批次设置当前纹理并检查缓冲区限制 顶点缓冲区管理 Declare Function rlLoadVertexArray () As UInteger ' 若支持,加载顶点数组(VAO) Declare Function rlLoadVertexBuffer (ByVal buffer As Any Ptr, ByVal SIZE As Integer, ByVal dynamic As BOOLEAN) As UInteger ' 加载一个顶点缓冲区对象 Declare Function rlLoadVertexBufferElement (ByVal buffer As Any Ptr, ByVal SIZE As Integer, ByVal dynamic As Boolean) As UInteger ' 加载顶点缓冲区元素对象 Declare Sub rlUpdateVertexBuffer (ByVal bufferId As UInteger, ByVal Data As Any Ptr, ByVal dataSize As Integer, ByVal offset As Integer) ' 更新 GPU 缓冲区上的顶点缓冲区对象数据 Declare Sub rlUpdateVertexBufferElements (ByVal id As UInteger, ByVal Data As Any Ptr, ByVal dataSize As Integer, ByVal offset As Integer) ' 更新 GPU 缓冲区上的顶点缓冲区元素数据 Declare Sub rlUnloadVertexArray (ByVal vaoId As UInteger) ' 卸载顶点数组(VAO) Declare Sub rlUnloadVertexBuffer (ByVal vboId As UInteger) ' 卸载顶点缓冲区对象 Declare Sub rlSetVertexAttribute (ByVal index As UInteger, ByVal compSize As Integer, ByVal type As Integer, ByVal normalized As Boolean, ByVal stride As Integer, ByVal offset As Integer) ' 设置顶点属性数据配置 Declare Sub rlSetVertexAttributeDivisor (ByVal index As UInteger, ByVal divisor As Integer) ' 设置顶点属性数据除数 Declare Sub rlSetVertexAttributeDefault (ByVal locIndex As Integer, ByVal value As Any Ptr, ByVal attribType As Integer, ByVal count As Integer) ' 当未提供属性时,设置顶点属性默认值 Declare Sub rlDrawVertexArray (ByVal offset As Integer, ByVal count As Integer) ' 绘制顶点数组(当前活动的 VAO) Declare Sub rlDrawVertexArrayElements (ByVal offset As Integer, ByVal count As Integer, ByVal buffer As Any Ptr) ' 绘制顶点数组元素 Declare Sub rlDrawVertexArrayInstanced (ByVal offset As Integer, ByVal count As Integer, ByVal instances As Integer) ' 使用实例化绘制顶点数组(当前活动的 VAO) Declare Sub rlDrawVertexArrayElementsInstanced (ByVal offset As Integer, ByVal count As Integer, ByVal buffer As Any Ptr, ByVal instances As Integer) ' 使用实例化绘制顶点数组元素 纹理管理 Declare Function rlLoadTexture (ByVal Data As Any Ptr, ByVal Width As Integer, ByVal height As Integer, ByVal Format As Integer, ByVal mipmapCount As Integer) As UInteger ' 加载纹理数据 Declare Function rlLoadTextureDepth (ByVal Width As Integer, ByVal height As Integer, ByVal useRenderBuffer As BOOLEAN) As UInteger ' 加载深度纹理/渲染缓冲区(用于附加到 FBO) Declare Function rlLoadTextureCubemap (ByVal data As Any Ptr, ByVal size As Integer, ByVal format As Integer, ByVal mipmapCount As Integer) As UInteger ' 加载立方体纹理数据 Declare Sub rlUpdateTexture (ByVal id As UInteger, ByVal offsetX As Integer, ByVal offsetY As Integer, ByVal Width As Integer, ByVal height As Integer, ByVal Format As Integer, ByVal Data As Any Ptr) ' 在 GPU 上用新数据更新纹理 Declare Sub rlGetGlTextureFormats (ByVal Format As Integer, ByVal glInternalFormat As UInteger Ptr, ByVal glFormat As UInteger Ptr, ByVal glType As UInteger Ptr) ' 获取 OpenGL 内部格式 Declare Function rlGetPixelFormatName (ByVal Format As UInteger) As ZString Ptr ' 获取像素格式的名称字符串 Declare Sub rlUnloadTexture (ByVal id As UInteger) ' 从 GPU 内存中卸载纹理 Declare Sub rlGenTextureMipmaps (ByVal id As UInteger, ByVal width As Integer, ByVal height As Integer, ByVal format As Integer, ByVal mipmaps As Integer Ptr) ' 为选定的纹理生成 Mipmap 数据 Declare Function rlReadTexturePixels (ByVal id As UInteger, ByVal width As Integer, ByVal height As Integer, ByVal format As Integer) As Any Ptr ' 读取纹理像素数据 Declare Function rlReadScreenPixels (ByVal Width As Integer, ByVal height As Integer) As Byte Ptr ' 读取屏幕像素数据(颜色缓冲区) 帧缓冲区管理(FBO) 'Declare Function rlLoadFramebuffer () As UInteger ' 加载一个空的帧缓冲区 Declare Sub rlFramebufferAttach (ByVal fboId As UInteger, ByVal texId As UInteger, ByVal attachType As Integer, ByVal texType As Integer, ByVal mipLevel As Integer) ' 将纹理/渲染缓冲区附加到帧缓冲区 Declare Function rlFramebufferComplete (ByVal id As UInteger) As Boolean ' 验证帧缓冲区是否完整 Declare Sub rlUnloadFramebuffer (ByVal id As UInteger) ' 从 GPU 删除帧缓冲区 Declare Function rlLoadFramebuffer(ByVal Width As Long, ByVal height As Long) As ULong 着色器管理 Declare Function rlLoadShaderCode (ByVal vsCode As ZString Ptr, ByVal fsCode As ZString Ptr) As UInteger ' 从代码字符串加载着色器 Declare Function rlCompileShader (ByVal shaderCode As ZString Ptr, ByVal type As Integer) As UInteger ' 编译自定义着色器并返回着色器 ID(类型:RL_VERTEX_SHADER、RL_FRAGMENT_SHADER、RL_COMPUTE_SHADER) Declare Function rlLoadShaderProgram (ByVal vShaderId As UInteger, ByVal fShaderId As UInteger) As UInteger ' 加载自定义着色器程序 Declare Sub rlUnloadShaderProgram (ByVal id As UInteger) ' 卸载着色器程序 Declare Function rlGetLocationUniform (ByVal shaderId As UInteger, ByVal uniformName As ZString Ptr) As Integer ' 获取着色器统一变量的位置 Declare Function rlGetLocationAttrib (ByVal shaderId As UInteger, ByVal attribName As ZString Ptr) As Integer ' 获取着色器属性的位置 Declare Sub rlSetUniform (ByVal locIndex As Integer, ByVal value As Any Ptr, ByVal uniformType As Integer, ByVal count As Integer) ' 设置着色器统一变量的值 Declare Sub rlSetUniformMatrix (ByVal locIndex As Integer, ByVal mat As Matrix) ' 设置着色器矩阵值 Declare Sub rlSetUniformMatrices (ByVal locIndex As Integer, ByVal mat As Matrix Ptr, ByVal count As Integer) ' 设置着色器多个矩阵值 Declare Sub rlSetUniformSampler (ByVal locIndex As Integer, ByVal textureId As UInteger) ' 设置着色器采样器的值 Declare Sub rlSetShader (ByVal id As UInteger, ByVal locs As Integer Ptr) ' 设置当前活动的着色器(ID 和位置) 计算着色器管理 Declare Function rlLoadComputeShaderProgram (ByVal shaderId As UInteger) As UInteger ' 加载计算着色器程序 Declare Sub rlComputeShaderDispatch(ByVal groupX As UInteger, ByVal groupY As UInteger, ByVal groupZ As UInteger) ' 调度计算着色器(相当于图形管线中的“绘制”操作) 着色器缓冲区存储对象管理(SSBO) Declare Function rlLoadShaderBuffer (ByVal size As UInteger, ByVal data As Any Ptr, ByVal usageHint As Integer) As UInteger ' 加载着色器存储缓冲区对象(SSBO) Declare Sub rlUnloadShaderBuffer (ByVal ssboId As UInteger) ' 卸载着色器存储缓冲区对象(SSBO) Declare Sub rlUpdateShaderBuffer (ByVal id As UInteger, ByVal Data As Any Ptr, ByVal dataSize As UInteger, ByVal offset As UInteger) ' 更新 SSBO 缓冲区数据 Declare Sub rlBindShaderBuffer (ByVal id As UInteger, ByVal index As UInteger) ' 绑定 SSBO 缓冲区 Declare Sub rlReadShaderBuffer (ByVal id As UInteger, ByVal dest As Any Ptr, ByVal count As UInteger, ByVal offset As UInteger) ' 读取 SSBO 缓冲区数据(从 GPU 到 CPU) Declare Sub rlCopyShaderBuffer (ByVal destId As UInteger, ByVal srcId As UInteger, ByVal destOffset As UInteger, ByVal srcOffset As UInteger, ByVal count As UInteger) ' 在缓冲区之间复制 SSBO 数据 Declare Function rlGetShaderBufferSize (ByVal id As UInteger) As UInteger ' 获取 SSBO 缓冲区大小 缓冲区管理 Declare Sub rlBindImageTexture (ByVal id As UInteger, ByVal index As UInteger, ByVal Format As Integer, ByVal readonly As Boolean) ' 绑定图像纹理 矩阵状态管理 Declare Function rlGetMatrixModelview () As Matrix ' 获取内部模型视图矩阵 Declare Function rlGetMatrixProjection () As Matrix ' 获取内部投影矩阵 Declare Function rlGetMatrixTransform () As Matrix ' 获取内部累积变换矩阵 Declare Function rlGetMatrixProjectionStereo (ByVal eye As Integer) As Matrix ' 获取用于立体渲染的内部投影矩阵(所选眼睛) Declare Function rlGetMatrixViewOffsetStereo (ByVal eye As Integer) As Matrix ' 获取用于立体渲染的内部视图偏移矩阵(所选眼睛) Declare Sub rlSetMatrixProjection (ByVal proj As Matrix) ' 设置自定义投影矩阵(替换内部投影矩阵) Declare Sub rlSetMatrixModelview (ByVal View As Matrix) ' 设置自定义模型视图矩阵(替换内部模型视图矩阵) Declare Sub rlSetMatrixProjectionStereo (ByVal Right As Matrix, ByVal Left As Matrix) ' 设置用于立体渲染的左右眼投影矩阵 Declare Sub rlSetMatrixViewOffsetStereo (ByVal Right As Matrix, ByVal Left As Matrix) ' 设置用于立体渲染的左右眼视图偏移矩阵 快速简易的立方体/四边形缓冲区加载->绘制->卸载 Declare Sub rlLoadDrawCube () ' 加载并绘制一个立方体 Declare Sub rlLoadDrawQuad() ' 加载并绘制一个四边形
2026年-2月-3日
321 阅读
0 评论
VisualFreeBasic编程文档
2026-2-3
Cairo 矢量绘图库 API 文档(中文,勇芳原创)
上下文的创建与销毁 Declare Function cairo_create(ByVal target As cairo_surface_t Ptr) As cairo_t Ptr 创建核心绘图上下文。需要一个 cairo_surface_t 作为“画布”。返回值是所有绘图操作的起点。 Declare Function cairo_reference(ByVal cr As cairo_t Ptr) As cairo_t Ptr 增加上下文引用计数。当多个部分需要共享同一个上下文时使用,防止被意外销毁。 Declare Sub cairo_destroy(ByVal cr As cairo_t Ptr) 减少引用计数并可能销毁上下文。与 create 或 reference 配对使用,管理资源释放。 Declare Function cairo_get_reference_count(ByVal cr As cairo_t Ptr) As ULong 查询当前的引用计数。主要用于调试内存管理问题。 用户数据管理 (高级功能) Declare Function cairo_get_user_data(ByVal cr As cairo_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr 给上下文绑定一块自定义数据。通过唯一的 key 关联一个指针 data,并可指定一个销毁回调函数 destroy。 Declare Function cairo_set_user_data(ByVal cr As cairo_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t 通过键取出之前绑定的自定义数据。 状态管理 Declare Sub cairo_save(ByVal cr As cairo_t Ptr) '保存当前所有绘图状态。将当前的颜色、线宽、变换矩阵等压入栈。 Declare Sub cairo_restore(ByVal cr As cairo_t Ptr) '恢复到上次保存的状态。从栈顶弹出状态并应用,与 save 成对使用。 分组操作 Declare Sub cairo_push_group(ByVal cr As cairo_t Ptr) 开始一个新的临时绘制组。之后的所有绘制将在一个独立的“透明层”上进行。 Declare Sub cairo_push_group_with_content(ByVal cr As cairo_t Ptr, ByVal content As cairo_content_t) 开始一个指定内容类型的绘制组。可以指定这个临时层是纯色(CAIRO_CONTENT_COLOR)、带透明度(CAIRO_CONTENT_COLOR_ALPHA)等。 Declare Function cairo_pop_group(ByVal cr As cairo_t Ptr) As cairo_pattern_t Ptr 结束临时组并返回图案。临时层被结束并包装成一个 cairo_pattern_t,可以后续用作笔刷或源。 Declare Sub cairo_pop_group_to_source(ByVal cr As cairo_t Ptr) 结束临时组并直接设为绘制源。这是最常用的流程:结束临时层,并立即将其设置为接下来绘制的“墨水”。 设置绘制源:控制“墨水”内容 Declare Sub cairo_set_source(ByVal cr As cairo_t Ptr, ByVal source As cairo_pattern_t Ptr) 设置任意图案作为绘制源。source 可以是纯色、渐变(cairo_pattern_create_linear/radial)、图像或之前的分组结果(cairo_pop_group)。最通用。 Declare Sub cairo_set_source_rgb(ByVal cr As cairo_t Ptr, ByVal red As Double, ByVal green As Double, ByVal blue As Double) 设置不透明的纯色源。RGB值范围 0.0 ~ 1.0。例如 (1.0, 0.0, 0.0) 为纯红。 Declare Sub cairo_set_source_rgba(ByVal cr As cairo_t Ptr, ByVal red As Double, ByVal green As Double, ByVal blue As Double, ByVal Alpha As Double) 设置带透明度的纯色源。Alpha值范围 0.0(全透明)~ 1.0(不透明)。例如 (0.0, 1.0, 0.0, 0.5) 为半透明绿。 Declare Sub cairo_set_source_surface(ByVal cr As cairo_t Ptr, ByVal surface As cairo_surface_t Ptr, ByVal x As Double, ByVal y As Double) 使用另一个图像表面作为绘制源。x, y 参数是源表面左上角相对于目标表面坐标系的偏移。常用于平铺图案或图像合成。 设置操作符:控制“混合模式” Declare Sub cairo_set_operator(ByVal cr As cairo_t Ptr, ByVal op As cairo_operator_t) 定义了新绘制的像素如何与画布上已有像素进行混合,相当于图形软件中的“图层混合模式”。 常用操作符 (cairo_operator_t) 效果说明 类比图形软件 CAIRO_OPERATOR_OVER (默认) 正常叠加。根据 Alpha 通道混合,最常用。 “正常”模式 CAIRO_OPERATOR_SOURCE 直接替换。忽略目标原有内容,直接覆盖。 “替换” CAIRO_OPERATOR_ADD 相加。将颜色值相加,产生变亮效果。 “线性减淡(添加)” CAIRO_OPERATOR_MULTIPLY 正片叠底。颜色值相乘,产生变暗效果。 “正片叠底” CAIRO_OPERATOR_CLEAR 清除。将重叠区域设为完全透明。 “清除” 设置容差:控制“计算精度” Declare Sub cairo_set_tolerance(ByVal cr As cairo_t Ptr, ByVal tolerance As Double) 影响路径绘制(尤其是曲线)时的渲染精度和性能平衡。 作用:定义路径(尤其是贝塞尔曲线)被转换为像素时允许的最大误差。 值越小:曲线拟合越精确,渲染质量越高,但计算成本更高。 值越大:使用更少的线段来近似曲线,渲染速度更快,但可能不够平滑。 默认值:通常为 0.1。对于大多数屏幕显示,此值已足够。仅在需要极高精度(如大幅面打印)或极端性能优化时才需调整。 抗锯齿 Declare Sub cairo_set_antialias(ByVal cr As cairo_t Ptr, ByVal antialias As cairo_antialias_t) 枚举类型定义 Enum cairo_antialias_t CAIRO_ANTIALIAS_DEFAULT = 0 ' 使用默认的抗锯齿算法 CAIRO_ANTIALIAS_NONE = 1 ' 不使用抗锯齿(锯齿边缘) CAIRO_ANTIALIAS_GRAY = 2 ' 使用灰度抗锯齿(默认) CAIRO_ANTIALIAS_SUBPIXEL = 3 ' 使用子像素抗锯齿(需要LCD屏幕) CAIRO_ANTIALIAS_FAST = 4 ' 快速抗锯齿 CAIRO_ANTIALIAS_GOOD = 5 ' 高质量抗锯齿 CAIRO_ANTIALIAS_BEST = 6 ' 最佳质量抗锯齿 End Enum 获取当前抗锯齿设置 Declare Function cairo_get_antialias(ByVal cr As cairo_t Ptr) As cairo_antialias_t 填充规则 Declare Sub cairo_set_fill_rule(ByVal cr As cairo_t Ptr, ByVal fill_rule As cairo_fill_rule_t) ' 填充规则枚举类型 Enum cairo_fill_rule_t CAIRO_FILL_RULE_WINDING = 0 ' 缠绕规则(默认) CAIRO_FILL_RULE_EVEN_ODD = 1 ' 奇偶规则 End Enum 获取当前填充规则 Declare Function cairo_get_fill_rule(ByVal cr As cairo_t Ptr) As cairo_fill_rule_t 设置线宽 Declare Sub cairo_set_line_width(ByVal cr As cairo_t Ptr, ByVal Width As Double) 设置绘制线条时的宽度(以用户空间单位表示) 影响所有后续的描边操作(cairo_stroke) 默认线宽为 2.0 线宽受当前变换矩阵影响(缩放会影响实际显示宽度) 获取当前线宽 Declare Function cairo_get_line_width(ByVal cr As cairo_t Ptr) As Double 设置线帽样式 Declare Sub cairo_set_line_cap(ByVal cr As cairo_t Ptr, ByVal line_cap As cairo_line_cap_t) 线帽样式枚举 Enum cairo_line_cap_t CAIRO_LINE_CAP_BUTT = 0 ' 平头(默认) CAIRO_LINE_CAP_ROUND = 1 ' 圆头 CAIRO_LINE_CAP_SQUARE = 2 ' 方头 End Enum 获取当前线帽样式 Declare Function cairo_get_line_cap(ByVal cr As cairo_t Ptr) As cairo_line_cap_t 设置线条端点(线帽)的绘制样式,影响所有后续的描边操作。 线帽样式详解: CAIRO_LINE_CAP_BUTT - 平头(默认) 线条在端点处被精确截断 不超出端点位置 适用于精确对齐的场景 CAIRO_LINE_CAP_ROUND - 圆头 在线条端点处绘制半圆形 端点超出原始端点位置(超出半个线宽) 视觉效果更柔和 CAIRO_LINE_CAP_SQUARE - 方头 在线条端点处绘制方形 端点超出原始端点位置(超出半个线宽) 与圆头类似,但端点为方形 线条样式设置 declare sub cairo_set_line_join(byval cr as cairo_t ptr, byval line_join as cairo_line_join_t) 设置线条连接样式 Enum cairo_line_join_t CAIRO_LINE_JOIN_MITER = 0 ' 尖角连接(默认) CAIRO_LINE_JOIN_ROUND = 1 ' 圆角连接 CAIRO_LINE_JOIN_BEVEL = 2 ' 斜角连接 End Enum Declare Sub cairo_set_dash(ByVal cr As cairo_t Ptr, ByVal dashes As Const Double Ptr, ByVal num_dashes As Long, ByVal offset As Double) 设置虚线模式 declare sub cairo_set_miter_limit(byval cr as cairo_t ptr, byval limit as double) 设置尖角限制,控制尖角连接的最大长度,当尖角过长时自动转换为斜角连接,默认值通常为 10.0 坐标变换 基本变换 declare sub cairo_translate(byval cr as cairo_t ptr, byval tx as double, byval ty as double) 平移 Declare Sub cairo_scale(ByVal cr As cairo_t Ptr, ByVal sx As Double, ByVal sy As Double) 缩放 Declare Sub cairo_rotate(ByVal cr As cairo_t Ptr, ByVal angle As Double) 旋转(弧度) 矩阵操作 Declare Sub cairo_transform(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr) 应用矩阵变换 Declare Sub cairo_set_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr) 设置变换矩阵 declare sub cairo_identity_matrix(byval cr as cairo_t ptr) 重置为单位矩阵 坐标转换 declare sub cairo_user_to_device(byval cr as cairo_t ptr, byval x as double ptr, byval y as double ptr) 坐标转换,用户坐标 ↔ 设备坐标转换 declare sub cairo_user_to_device_distance(byval cr as cairo_t ptr, byval dx as double ptr, byval dy as double ptr) 距离转换,用户坐标 ↔ 设备坐标转换 Declare Sub cairo_device_to_user(ByVal cr As cairo_t Ptr, ByVal x As Double Ptr, ByVal y As Double Ptr) 坐标转换,用户坐标 ↔ 设备坐标转换 declare sub cairo_device_to_user_distance(byval cr as cairo_t ptr, byval dx as double ptr, byval dy as double ptr) 距离转换,用户坐标 ↔ 设备坐标转换 路径操作 路径创建 Declare Sub cairo_new_path(ByVal cr As cairo_t Ptr) 开始新路径 Declare Sub cairo_new_sub_path(ByVal cr As cairo_t Ptr) 开始新的子路径 Declare Sub cairo_close_path(ByVal cr As cairo_t Ptr) 闭合当前路径 直线路径 declare sub cairo_move_to(byval cr as cairo_t ptr, byval x as double, byval y as double) 移动到起点 declare sub cairo_line_to(byval cr as cairo_t ptr, byval x as double, byval y as double) 画直线到 Declare Sub cairo_rel_move_to(ByVal cr As cairo_t Ptr, ByVal dx As Double, ByVal dy As Double) 相对移动 declare sub cairo_rel_line_to(byval cr as cairo_t ptr, byval dx as double, byval dy as double) 相对画线 曲线路径 declare sub cairo_curve_to(byval cr as cairo_t ptr, byval x1 as double, byval y1 as double, byval x2 as double, byval y2 as double, byval x3 as double, byval y3 as double) 三次贝塞尔曲线 declare sub cairo_rel_curve_to(byval cr as cairo_t ptr, byval dx1 as double, byval dy1 as double, byval dx2 as double, byval dy2 as double, byval dx3 as double, byval dy3 as double) 相对三次贝塞尔曲线 圆弧路径 Declare Sub cairo_arc(ByVal cr As cairo_t Ptr, ByVal xc As Double, ByVal yc As Double, ByVal radius As Double, ByVal angle1 As Double, ByVal angle2 As Double) 圆弧(逆时针方向) declare sub cairo_arc_negative(byval cr as cairo_t ptr, byval xc as double, byval yc as double, byval radius as double, byval angle1 as double, byval angle2 as double) 圆弧(顺时针方向) 矩形路径 declare sub cairo_rectangle(byval cr as cairo_t ptr, byval x as double, byval y as double, byval width as double, byval height as double) 路径信息获取 获取路径边界框 Declare Sub cairo_path_extents(ByVal cr As cairo_t Ptr, ByVal x1 As Double Ptr, ByVal y1 As Double Ptr, ByVal x2 As Double Ptr, ByVal y2 As Double Ptr) declare sub cairo_stroke_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr) declare sub cairo_fill_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr) 绘制操作 填充和描边 declare sub cairo_stroke(byval cr as cairo_t ptr) 描边并清除路径 declare sub cairo_stroke_preserve(byval cr as cairo_t ptr) 描边但保留路径 declare sub cairo_fill(byval cr as cairo_t ptr) 填充并清除路径 Declare Sub cairo_fill_preserve(ByVal cr As cairo_t Ptr) 填充但保留路径 区域填充 declare sub cairo_paint(byval cr as cairo_t ptr) 填充整个表面 declare sub cairo_paint_with_alpha(byval cr as cairo_t ptr, byval alpha as double) 带透明度填充 蒙版操作 Declare Sub cairo_mask(ByVal cr As cairo_t Ptr, ByVal PATTERN As cairo_pattern_t Ptr) 使用图案蒙版 Declare Sub cairo_mask_surface(ByVal cr As cairo_t Ptr, ByVal surface As cairo_surface_t Ptr, ByVal surface_x As Double, ByVal surface_y As Double) 使用表面蒙版 剪裁操作 剪裁设置 declare sub cairo_clip(byval cr as cairo_t ptr) 设置剪裁区域并清除路径 declare sub cairo_clip_preserve(byval cr as cairo_t ptr) 设置剪裁区域但保留路径 declare sub cairo_reset_clip(byval cr as cairo_t ptr) 重置剪裁区域 剪裁信息 declare sub cairo_clip_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr) 获取剪裁区域边界 获取剪裁矩形列表 Declare Function cairo_copy_clip_rectangle_list(ByVal cr As cairo_t Ptr) As cairo_rectangle_list_t Ptr 获取剪裁矩形列表 相关结构体定义 Type cairo_rectangle_t x As Double ' 矩形左上角X坐标 y As Double ' 矩形左上角Y坐标 width As Double ' 矩形宽度 height As Double ' 矩形高度 End Type Type cairo_rectangle_list_t status As cairo_status_t ' 操作状态 rectangles As cairo_rectangle_t Ptr ' 矩形数组指针 num_rectangles As Long ' 矩形数量 End Type ' 状态枚举 Enum cairo_status_t CAIRO_STATUS_SUCCESS = 0 ' 成功 CAIRO_STATUS_NO_MEMORY = 1 ' 内存不足 CAIRO_STATUS_INVALID_RESTORE = 2 ' 无效的恢复操作 CAIRO_STATUS_INVALID_POP_GROUP = 3 ' 无效的弹出组操作 CAIRO_STATUS_NO_CURRENT_POINT = 4 ' 没有当前点 CAIRO_STATUS_INVALID_MATRIX = 5 ' 无效矩阵 CAIRO_STATUS_INVALID_STATUS = 6 ' 无效状态 CAIRO_STATUS_NULL_POINTER = 7 ' 空指针 CAIRO_STATUS_INVALID_STRING = 8 ' 无效字符串 CAIRO_STATUS_INVALID_PATH_DATA = 9 ' 无效路径数据 CAIRO_STATUS_READ_ERROR = 10 ' 读取错误 CAIRO_STATUS_WRITE_ERROR = 11 ' 写入错误 CAIRO_STATUS_SURFACE_FINISHED = 12 ' 表面已结束 CAIRO_STATUS_SURFACE_TYPE_MISMATCH = 13 ' 表面类型不匹配 CAIRO_STATUS_PATTERN_TYPE_MISMATCH = 14 ' 图案类型不匹配 CAIRO_STATUS_INVALID_CONTENT = 15 ' 无效内容 CAIRO_STATUS_INVALID_FORMAT = 16 ' 无效格式 CAIRO_STATUS_INVALID_VISUAL = 17 ' 无效可视化 CAIRO_STATUS_FILE_NOT_FOUND = 18 ' 文件未找到 CAIRO_STATUS_INVALID_DASH = 19 ' 无效虚线 CAIRO_STATUS_INVALID_DSC_COMMENT = 20 ' 无效DSC注释 CAIRO_STATUS_INVALID_INDEX = 21 ' 无效索引 CAIRO_STATUS_CLIP_NOT_REPRESENTABLE = 22 ' 剪裁不可表示 CAIRO_STATUS_TEMP_FILE_ERROR = 23 ' 临时文件错误 CAIRO_STATUS_INVALID_STRIDE = 24 ' 无效步长 CAIRO_STATUS_FONT_TYPE_MISMATCH = 25 ' 字体类型不匹配 CAIRO_STATUS_USER_FONT_IMMUTABLE = 26 ' 用户字体不可变 CAIRO_STATUS_USER_FONT_ERROR = 27 ' 用户字体错误 CAIRO_STATUS_NEGATIVE_COUNT = 28 ' 负数计数 CAIRO_STATUS_INVALID_CLUSTERS = 29 ' 无效簇 CAIRO_STATUS_INVALID_SLANT = 30 ' 无效倾斜 CAIRO_STATUS_INVALID_WEIGHT = 31 ' 无效权重 CAIRO_STATUS_INVALID_SIZE = 32 ' 无效大小 CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED = 33 ' 用户字体未实现 CAIRO_STATUS_DEVICE_TYPE_MISMATCH = 34 ' 设备类型不匹配 CAIRO_STATUS_DEVICE_ERROR = 35 ' 设备错误 CAIRO_STATUS_INVALID_MESH_CONSTRUCTION = 36 ' 无效网格构造 CAIRO_STATUS_DEVICE_FINISHED = 37 ' 设备已结束 CAIRO_STATUS_LAST_STATUS = 38 ' 最后一个状态 End Enum Declare Sub cairo_rectangle_list_destroy(ByVal rectangle_list As cairo_rectangle_list_t Ptr) 销毁剪裁矩形列表 点包含检测 declare function cairo_in_stroke(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t 点是否在描边区域内 declare function cairo_in_fill(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t 点是否在填充区域内 declare function cairo_in_clip(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t 点是否在剪裁区域内 页面操作 declare sub cairo_copy_page(byval cr as cairo_t ptr) 复制当前页面(用于多页输出) declare sub cairo_show_page(byval cr as cairo_t ptr) 显示页面并开始新页 分配字形数组 Declare Function cairo_glyph_allocate(ByVal num_glyphs As Long) As cairo_glyph_t Ptr 相关结构体定义 Type cairo_glyph_t index As Long ' 字形在字体中的索引 x As Double ' 字形原点的X偏移 y As Double ' 字形原点的Y偏移 End Type ' 常量定义 Const CAIRO_GLYPH_NULL As cairo_glyph_t = Type(0, 0.0, 0.0) Declare Sub cairo_glyph_free(ByVal glyphs As cairo_glyph_t Ptr) 释放字形数组 分配文本簇数组 Declare Function cairo_text_cluster_allocate(ByVal num_clusters As Long) As cairo_text_cluster_t Ptr ' 相关结构体定义 Type cairo_text_cluster_t num_bytes As Long ' 簇中的字节数 num_glyphs As Long ' 簇中的字形数 End Type ' 文本簇标志 Enum cairo_text_cluster_flags_t CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = &H00000001 ' 从右到左文本 End Enum Declare Sub cairo_text_cluster_free(ByVal clusters As cairo_text_cluster_t Ptr) 释放文本簇数组 字体和文本渲染 字体选项 创建和管理 Declare Function cairo_font_options_create() As cairo_font_options_t Ptr 创建字体选项 Declare Function cairo_font_options_copy(ByVal original As Const cairo_font_options_t Ptr) As cairo_font_options_t Ptr 复制字体选项 declare sub cairo_font_options_merge(byval options as cairo_font_options_t ptr, byval other as const cairo_font_options_t ptr) 合并选项 declare function cairo_font_options_status(byval options as cairo_font_options_t ptr) as cairo_status_t 检查字体选项对象状态 declare function cairo_font_options_equal(byval options as const cairo_font_options_t ptr, byval other as const cairo_font_options_t ptr) as cairo_bool_t 比较 declare function cairo_font_options_hash(byval options as const cairo_font_options_t ptr) as culong 哈希 declare sub cairo_font_options_destroy(byval options as cairo_font_options_t ptr) 销毁选项 抗锯齿设置 Declare Sub cairo_font_options_set_antialias(ByVal Options As cairo_font_options_t Ptr, ByVal antialias As cairo_antialias_t) Enum cairo_antialias_t CAIRO_ANTIALIAS_DEFAULT = 0 CAIRO_ANTIALIAS_NONE = 1 CAIRO_ANTIALIAS_GRAY = 2 CAIRO_ANTIALIAS_SUBPIXEL = 3 CAIRO_ANTIALIAS_FAST = 4 CAIRO_ANTIALIAS_GOOD = 5 CAIRO_ANTIALIAS_BEST = 6 End Enum declare function cairo_font_options_get_antialias(byval options as const cairo_font_options_t ptr) as cairo_antialias_t 获取 子像素顺序 Declare Sub cairo_font_options_set_subpixel_order(ByVal Options As cairo_font_options_t Ptr, ByVal subpixel_order As cairo_subpixel_order_t) Enum cairo_subpixel_order_t CAIRO_SUBPIXEL_ORDER_DEFAULT = 0 CAIRO_SUBPIXEL_ORDER_RGB = 1 CAIRO_SUBPIXEL_ORDER_BGR = 2 CAIRO_SUBPIXEL_ORDER_VRGB = 3 CAIRO_SUBPIXEL_ORDER_VBGR = 4 End Enum Declare Function cairo_font_options_get_subpixel_order(ByVal Options As Const cairo_font_options_t Ptr) As cairo_subpixel_order_t 提示设置 declare sub cairo_font_options_set_hint_style(byval options as cairo_font_options_t ptr, byval hint_style as cairo_hint_style_t) declare function cairo_font_options_get_hint_style(byval options as const cairo_font_options_t ptr) as cairo_hint_style_t Declare Sub cairo_font_options_set_hint_metrics(ByVal Options As cairo_font_options_t Ptr, ByVal hint_metrics As cairo_hint_metrics_t) Declare Function cairo_font_options_get_hint_metrics(ByVal Options As Const cairo_font_options_t Ptr) As cairo_hint_metrics_t 基本字体操作 设置字体 declare sub cairo_select_font_face(byval cr as cairo_t ptr, byval family as const zstring ptr, byval slant as cairo_font_slant_t, byval weight as cairo_font_weight_t) ' 设置字体族、样式和粗细 Enum cairo_font_slant_t CAIRO_FONT_SLANT_NORMAL = 0 CAIRO_FONT_SLANT_ITALIC = 1 CAIRO_FONT_SLANT_OBLIQUE = 2 End Enum Enum cairo_font_weight_t CAIRO_FONT_WEIGHT_NORMAL = 0 CAIRO_FONT_WEIGHT_BOLD = 1 End Enum Declare Sub cairo_set_font_size(ByVal cr As cairo_t Ptr, ByVal SIZE As Double) 字体矩阵 declare sub cairo_matrix_init_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double) 创建缩放矩阵 Declare Sub cairo_set_font_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr) 设置 Declare Sub cairo_get_font_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As cairo_matrix_t Ptr) 获取 字体选项管理 declare sub cairo_set_font_options(byval cr as cairo_t ptr, byval options as const cairo_font_options_t ptr) declare sub cairo_get_font_options(byval cr as cairo_t ptr, byval options as cairo_font_options_t ptr) 字体面和缩放字体 字体面操作 declare sub cairo_set_font_face(byval cr as cairo_t ptr, byval font_face as cairo_font_face_t ptr) declare function cairo_get_font_face(byval cr as cairo_t ptr) as cairo_font_face_t ptr declare function cairo_font_face_reference(byval font_face as cairo_font_face_t ptr) as cairo_font_face_t ptr declare sub cairo_font_face_destroy(byval font_face as cairo_font_face_t ptr) declare function cairo_font_face_get_reference_count(byval font_face as cairo_font_face_t ptr) as ulong Declare Function cairo_font_face_status(ByVal font_face As cairo_font_face_t Ptr) As cairo_status_t 缩放字体 Declare Sub cairo_set_scaled_font(ByVal cr As cairo_t Ptr, ByVal scaled_font As Const cairo_scaled_font_t Ptr) Declare Function cairo_get_scaled_font(ByVal cr As cairo_t Ptr) As cairo_scaled_font_t Ptr 文本绘制和测量 绘制文本 Declare Sub cairo_show_text(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr) 简单文本绘制 declare sub cairo_show_glyphs(byval cr as cairo_t ptr, byval glyphs as const cairo_glyph_t ptr, byval num_glyphs as long) 字形绘制 declare sub cairo_show_text_glyphs(byval cr as cairo_t ptr, byval utf8 as const zstring ptr, byval utf8_len as long, byval glyphs as const cairo_glyph_t ptr, byval num_glyphs as long, byval clusters as const cairo_text_cluster_t ptr, byval num_clusters as long, byval cluster_flags as cairo_text_cluster_flags_t) 带簇信息的文本绘制 文本路径 Declare Sub cairo_text_path(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr) 将文本添加到路径中 Declare Sub cairo_glyph_path(ByVal cr As cairo_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long) 将字形添加到路径中 文本测量 Type cairo_text_extents_t x_bearing As Double ' 从原点到最左点的水平距离 y_bearing As Double ' 从原点到最上点的垂直距离 width As Double ' 文本宽度 height As Double ' 文本高度 x_advance As Double ' 原点到下一个文本原点的距离 y_advance As Double ' 原点到下一行文本原点的距离 End Type Type cairo_font_extents_t ascent As Double ' 从基线到最高点的距离 descent As Double ' 从基线到最低点的距离 height As Double ' 推荐的行高 max_x_advance As Double ' 最大前进宽度 max_y_advance As Double ' 最大前进高度 End Type Declare Sub cairo_text_extents(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal extents As cairo_text_extents_t Ptr) 测量文字 Declare Sub cairo_font_extents(ByVal cr As cairo_t Ptr, ByVal extents As cairo_font_extents_t Ptr) 测量字体 Declare Sub cairo_scaled_font_text_extents(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal extents As cairo_text_extents_t Ptr) 缩放字体测量 Declare Sub cairo_glyph_extents(ByVal cr As cairo_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long, ByVal extents As cairo_text_extents_t Ptr) 字形测量 玩具字体 创建和使用玩具字体 declare function cairo_toy_font_face_create(byval family as const zstring ptr, byval slant as cairo_font_slant_t, byval weight as cairo_font_weight_t) as cairo_font_face_t ptr declare function cairo_toy_font_face_get_family(byval font_face as cairo_font_face_t ptr) as const zstring ptr Declare Function cairo_toy_font_face_get_slant(ByVal font_face As cairo_font_face_t Ptr) As cairo_font_slant_t declare function cairo_toy_font_face_get_weight(byval font_face as cairo_font_face_t ptr) as cairo_font_weight_t 用户自定义字体 创建用户字体面 declare function cairo_user_font_face_create() as cairo_font_face_t ptr 创建 Type cairo_user_scaled_font_init_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal cr As cairo_t Ptr, ByVal extents As cairo_font_extents_t Ptr) As cairo_status_t Type cairo_user_scaled_font_render_glyph_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal glyph As culong, ByVal cr As cairo_t Ptr, ByVal extents As cairo_text_extents_t Ptr) As cairo_status_t Type cairo_user_scaled_font_text_to_glyphs_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal utf8_len As Long, ByVal glyphs As cairo_glyph_t Ptr Ptr, ByVal num_glyphs As Long Ptr, ByVal clusters As cairo_text_cluster_t Ptr Ptr, ByVal num_clusters As Long Ptr, ByVal cluster_flags As cairo_text_cluster_flags_t Ptr) As cairo_status_t Type cairo_user_scaled_font_unicode_to_glyph_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal unicode As culong, ByVal glyph_index As culong Ptr) As cairo_status_t Declare Sub cairo_user_font_face_set_init_func(ByVal font_face As cairo_font_face_t Ptr, ByVal init_func As cairo_user_scaled_font_init_func_t) declare sub cairo_user_font_face_set_render_glyph_func(byval font_face as cairo_font_face_t ptr, byval render_glyph_func as cairo_user_scaled_font_render_glyph_func_t) Declare Sub cairo_user_font_face_set_text_to_glyphs_func(ByVal font_face As cairo_font_face_t Ptr, ByVal text_to_glyphs_func As cairo_user_scaled_font_text_to_glyphs_func_t) declare sub cairo_user_font_face_set_unicode_to_glyph_func(byval font_face as cairo_font_face_t ptr, byval unicode_to_glyph_func as cairo_user_scaled_font_unicode_to_glyph_func_t) declare function cairo_user_font_face_get_init_func(byval font_face as cairo_font_face_t ptr) as cairo_user_scaled_font_init_func_t declare function cairo_user_font_face_get_render_glyph_func(byval font_face as cairo_font_face_t ptr) as cairo_user_scaled_font_render_glyph_func_t Declare Function cairo_user_font_face_get_text_to_glyphs_func(ByVal font_face As cairo_font_face_t Ptr) As cairo_user_scaled_font_text_to_glyphs_func_t Declare Function cairo_user_font_face_get_unicode_to_glyph_func(ByVal font_face As cairo_font_face_t Ptr) As cairo_user_scaled_font_unicode_to_glyph_func_t 其它字体相关 declare function cairo_font_face_get_type(byval font_face as cairo_font_face_t ptr) as cairo_font_type_t Declare Function cairo_font_face_get_user_data(ByVal font_face As cairo_font_face_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr Declare Function cairo_font_face_set_user_data(ByVal font_face As cairo_font_face_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t Declare Function cairo_scaled_font_create(ByVal font_face As cairo_font_face_t Ptr, ByVal font_matrix As Const cairo_matrix_t Ptr, ByVal ctm As Const cairo_matrix_t Ptr, ByVal options As Const cairo_font_options_t Ptr) As cairo_scaled_font_t Ptr Declare Function cairo_scaled_font_reference(ByVal scaled_font As cairo_scaled_font_t Ptr) As cairo_scaled_font_t Ptr Declare Sub cairo_scaled_font_destroy(ByVal scaled_font As cairo_scaled_font_t Ptr) declare function cairo_scaled_font_get_reference_count(byval scaled_font as cairo_scaled_font_t ptr) as ulong Declare Function cairo_scaled_font_status(ByVal scaled_font As cairo_scaled_font_t Ptr) As cairo_status_t declare function cairo_scaled_font_get_type(byval scaled_font as cairo_scaled_font_t ptr) as cairo_font_type_t declare function cairo_scaled_font_get_user_data(byval scaled_font as cairo_scaled_font_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr Declare Function cairo_scaled_font_set_user_data(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t declare sub cairo_scaled_font_extents(byval scaled_font as cairo_scaled_font_t ptr, byval extents as cairo_font_extents_t ptr) Declare Sub cairo_scaled_font_glyph_extents(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long, ByVal extents As cairo_text_extents_t Ptr) declare function cairo_scaled_font_text_to_glyphs(byval scaled_font as cairo_scaled_font_t ptr, byval x as double, byval y as double, byval utf8 as const zstring ptr, byval utf8_len as long, byval glyphs as cairo_glyph_t ptr ptr, byval num_glyphs as long ptr, byval clusters as cairo_text_cluster_t ptr ptr, byval num_clusters as long ptr, byval cluster_flags as cairo_text_cluster_flags_t ptr) as cairo_status_t declare function cairo_scaled_font_get_font_face(byval scaled_font as cairo_scaled_font_t ptr) as cairo_font_face_t ptr Declare Sub cairo_scaled_font_get_font_matrix(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal font_matrix As cairo_matrix_t Ptr) Declare Sub cairo_scaled_font_get_ctm(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal ctm As cairo_matrix_t Ptr) Declare Sub cairo_scaled_font_get_scale_matrix(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal scale_matrix As cairo_matrix_t Ptr) Declare Sub cairo_scaled_font_get_font_options(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal Options As cairo_font_options_t Ptr) 上下文状态查询 核心状态查询 Declare Function cairo_get_operator(ByVal cr As cairo_t Ptr) As cairo_operator_t 获取当前混合操作符(如覆盖、相加、相乘等) Declare Function cairo_get_source(ByVal cr As cairo_t Ptr) As cairo_pattern_t Ptr 获取当前绘图源(颜色/渐变/图案) declare function cairo_get_target(byval cr as cairo_t ptr) as cairo_surface_t ptr 获取目标绘制表面 declare function cairo_get_group_target(byval cr as cairo_t ptr) as cairo_surface_t ptr 获取组目标表面(用于push/pop_group) declare function cairo_get_tolerance(byval cr as cairo_t ptr) as double 获取曲线近似容差(精度控制) declare function cairo_get_antialias(byval cr as cairo_t ptr) as cairo_antialias_t 获取抗锯齿模式(无/灰度/子像素等) 路径相关 declare function cairo_has_current_point(byval cr as cairo_t ptr) as cairo_bool_t 检查路径是否有当前点 declare sub cairo_get_current_point(byval cr as cairo_t ptr, byval x as double ptr, byval y as double ptr) 获取当前点坐标 declare function cairo_get_fill_rule(byval cr as cairo_t ptr) as cairo_fill_rule_t 获取填充规则(缠绕/奇偶) 线条样式 declare function cairo_get_line_width(byval cr as cairo_t ptr) as double 获取线宽 declare function cairo_get_line_cap(byval cr as cairo_t ptr) as cairo_line_cap_t 获取线帽样式(平头/圆头/方头) declare function cairo_get_line_join(byval cr as cairo_t ptr) as cairo_line_join_t 获取连接样式(尖角/圆角/斜角) declare function cairo_get_miter_limit(byval cr as cairo_t ptr) as double 获取尖角限制值 虚线模式 declare function cairo_get_dash_count(byval cr as cairo_t ptr) as long 获取虚线段数 declare sub cairo_get_dash(byval cr as cairo_t ptr, byval dashes as double ptr, byval offset as double ptr) 获取虚线模式和偏移 变换矩阵 Declare Sub cairo_get_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As cairo_matrix_t Ptr) 获取当前变换矩阵 路径操作 declare function cairo_copy_path(byval cr as cairo_t ptr) as cairo_path_t ptr 复制当前路径 Declare Function cairo_copy_path_flat(ByVal cr As cairo_t Ptr) As cairo_path_t Ptr 复制扁平化路径 declare sub cairo_append_path(byval cr as cairo_t ptr, byval path as const cairo_path_t ptr) 追加路径 declare sub cairo_path_destroy(byval path as cairo_path_t ptr) 销毁路径 状态管理 declare function cairo_status(byval cr as cairo_t ptr) as cairo_status_t 获取上下文状态 declare function cairo_status_to_string(byval status as cairo_status_t) as const zstring ptr 状态码转字符串 declare function cairo_device_reference(byval device as cairo_device_t ptr) as cairo_device_t ptr 设备引用计数增加 设备管理 declare function cairo_device_get_type(byval device as cairo_device_t ptr) as cairo_device_type_t 获取设备类型(如GL、DRM等) declare function cairo_device_status(byval device as cairo_device_t ptr) as cairo_status_t 检查设备状态(是否有错误) declare function cairo_device_acquire(byval device as cairo_device_t ptr) as cairo_status_t 线程安全操作,锁定设备(多线程安全) declare sub cairo_device_release(byval device as cairo_device_t ptr) 线程安全操作,释放设备锁 declare sub cairo_device_flush(byval device as cairo_device_t ptr) 生命周期管理:刷新设备缓冲区 declare sub cairo_device_finish(byval device as cairo_device_t ptr) 生命周期管理:完成设备操作 declare sub cairo_device_destroy(byval device as cairo_device_t ptr) 生命周期管理:销毁设备(减少引用计数) declare function cairo_device_get_reference_count(byval device as cairo_device_t ptr) as ulong 引用和用户数据:获取引用计数 declare function cairo_device_get_user_data(byval device as cairo_device_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr 引用和用户数据:用户数据管理 declare function cairo_device_set_user_data(byval device as cairo_device_t ptr, byval key as const cairo_user_data_key_t ptr, byval user_data as any ptr, byval destroy as cairo_destroy_func_t) as cairo_status_t 引用和用户数据:用户数据管理 表面创建 declare function cairo_surface_create_similar(byval other as cairo_surface_t ptr, byval content as cairo_content_t, byval width as long, byval height as long) as cairo_surface_t ptr 创建类似表面,基于现有表面创建新表面(相同类型和内容) Declare Function cairo_surface_create_similar_image(ByVal other As cairo_surface_t Ptr, ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long) As cairo_surface_t Ptr 创建类似图像表面,创建指定格式的图像表面 Declare Function cairo_surface_map_to_image(ByVal surface As cairo_surface_t Ptr, ByVal extents As Const cairo_rectangle_int_t Ptr) As cairo_surface_t Ptr 表面映射到图像,获取表面的图像表示(用于像素操作) Declare Sub cairo_surface_unmap_image(ByVal surface As cairo_surface_t Ptr, ByVal image As cairo_surface_t Ptr) 取消图像映射,完成图像操作并同步回表面 Declare Function cairo_surface_create_for_rectangle(ByVal target As cairo_surface_t Ptr, ByVal x As Double, ByVal y As Double, ByVal Width As Double, ByVal height As Double) As cairo_surface_t Ptr 创建矩形区域表面,创建目标表面子区域的视图表面 观察者表面(性能监控) declare function cairo_surface_create_observer(byval target as cairo_surface_t ptr, byval mode as cairo_surface_observer_mode_t) as cairo_surface_t ptr 创建观察者表面 Type cairo_surface_observer_callback_t As Sub(ByVal observer As cairo_surface_t Ptr, ByVal target As cairo_surface_t Ptr, ByVal Data As Any Ptr) 观察回调函数 - 监控特定操作 Declare Function cairo_surface_observer_add_paint_callback(ByVal abstract_surface As cairo_surface_t Ptr, ByVal func As cairo_surface_observer_callback_t, ByVal Data As Any Ptr) As cairo_status_t 绘制操作 declare function cairo_surface_observer_add_mask_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t 蒙版操作 declare function cairo_surface_observer_add_fill_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t 填充操作 Declare Function cairo_surface_observer_add_stroke_callback(ByVal abstract_surface As cairo_surface_t Ptr, ByVal func As cairo_surface_observer_callback_t, ByVal Data As Any Ptr) As cairo_status_t 描边操作 declare function cairo_surface_observer_add_glyphs_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t 文本操作 declare function cairo_surface_observer_add_flush_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t 刷新操作 declare function cairo_surface_observer_add_finish_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t 完成操作 declare function cairo_surface_observer_elapsed(byval surface as cairo_surface_t ptr) as double 性能分析:获取总耗时 declare function cairo_device_observer_elapsed(byval device as cairo_device_t ptr) as double 性能分析:设备总耗时 Declare Function cairo_surface_observer_print(ByVal surface As cairo_surface_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t 调试输出:打印表面操作统计 Declare Function cairo_device_observer_print(ByVal device As cairo_device_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t 调试输出:打印设备操作统计 表面管理 declare function cairo_surface_reference(byval surface as cairo_surface_t ptr) as cairo_surface_t ptr 生命周期管理:增加引用计数 declare sub cairo_surface_finish(byval surface as cairo_surface_t ptr) 生命周期管理:完成表面操作 declare sub cairo_surface_destroy(byval surface as cairo_surface_t ptr) 生命周期管理:销毁表面 declare function cairo_surface_get_device(byval surface as cairo_surface_t ptr) as cairo_device_t ptr 获取关联设备 declare function cairo_surface_get_reference_count(byval surface as cairo_surface_t ptr) as ulong 获取引用计数 declare function cairo_surface_status(byval surface as cairo_surface_t ptr) as cairo_status_t 检查表面状态 declare function cairo_device_observer_paint_elapsed(byval device as cairo_device_t ptr) as double 绘制操作总耗时 declare function cairo_device_observer_mask_elapsed(byval device as cairo_device_t ptr) as double 蒙版操作总耗时 declare function cairo_device_observer_fill_elapsed(byval device as cairo_device_t ptr) as double 填充操作总耗时 declare function cairo_device_observer_stroke_elapsed(byval device as cairo_device_t ptr) as double 描边操作总耗时 declare function cairo_device_observer_glyphs_elapsed(byval device as cairo_device_t ptr) as double 文本操作总耗时 表面信息查询 declare function cairo_surface_get_type(byval surface as cairo_surface_t ptr) as cairo_surface_type_t 获取表面类型,返回:图像、PDF、SVG、Windows、Quartz等类型枚举 declare function cairo_surface_get_content(byval surface as cairo_surface_t ptr) as cairo_content_t 获取表面内容类型,返回:颜色、透明度、颜色+透明度等格式枚举 PNG 输出函数 Declare Function cairo_surface_write_to_png(ByVal surface As cairo_surface_t Ptr, ByVal filename As Const ZString Ptr) As cairo_status_t 保存为PNG文件,将表面内容写入到PNG格式文件 Declare Function cairo_surface_write_to_png_stream(ByVal surface As cairo_surface_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t 流式保存PNG,通过回调函数流式写入PNG数据(用于网络或内存输出) 用户数据管理 declare function cairo_surface_get_user_data(byval surface as cairo_surface_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr 获取用户数据,通过键值获取关联的自定义数据 Declare Function cairo_surface_set_user_data(ByVal surface As cairo_surface_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t 设置用户数据,关联自定义数据到表面,可设置销毁回调 MIME 数据管理 declare sub cairo_surface_get_mime_data(byval surface as cairo_surface_t ptr, byval mime_type as const zstring ptr, byval data as const ubyte ptr ptr, byval length as culong ptr) 获取MIME类型数据(如JPEG预览) Declare Function cairo_surface_set_mime_data(ByVal surface As cairo_surface_t Ptr, ByVal mime_type As Const ZString Ptr, ByVal Data As Const UByte Ptr, ByVal length As culong, ByVal destroy As cairo_destroy_func_t, ByVal closure As Any Ptr) As cairo_status_t 设置MIME类型数据 declare function cairo_surface_supports_mime_type(byval surface as cairo_surface_t ptr, byval mime_type as const zstring ptr) as cairo_bool_t 检查是否支持某MIME类型 字体和刷新 Declare Sub cairo_surface_get_font_options(ByVal surface As cairo_surface_t Ptr, ByVal options As cairo_font_options_t Ptr) 获取表面字体选项 declare sub cairo_surface_flush(byval surface as cairo_surface_t ptr) 强制刷新表面缓存 declare sub cairo_surface_mark_dirty(byval surface as cairo_surface_t ptr) 标记整个表面为脏(需重绘) declare sub cairo_surface_mark_dirty_rectangle(byval surface as cairo_surface_t ptr, byval x as long, byval y as long, byval width as long, byval height as long) 标记矩形区域为脏 设备变换 declare sub cairo_surface_set_device_scale(byval surface as cairo_surface_t ptr, byval x_scale as double, byval y_scale as double) declare sub cairo_surface_get_device_scale(byval surface as cairo_surface_t ptr, byval x_scale as double ptr, byval y_scale as double ptr) 设备缩放因子(HiDPI支持) declare sub cairo_surface_set_device_offset(byval surface as cairo_surface_t ptr, byval x_offset as double, byval y_offset as double) Declare Sub cairo_surface_get_device_offset(ByVal surface As cairo_surface_t Ptr, ByVal x_offset As Double Ptr, ByVal y_offset As Double Ptr) 设备偏移量 declare sub cairo_surface_set_fallback_resolution(byval surface as cairo_surface_t ptr, byval x_pixels_per_inch as double, byval y_pixels_per_inch as double) declare sub cairo_surface_get_fallback_resolution(byval surface as cairo_surface_t ptr, byval x_pixels_per_inch as double ptr, byval y_pixels_per_inch as double ptr) 后备分辨率 页面操作 declare sub cairo_surface_copy_page(byval surface as cairo_surface_t ptr) 复制当前页(多页输出) declare sub cairo_surface_show_page(byval surface as cairo_surface_t ptr) 显示页面(开始新页) declare function cairo_surface_has_show_text_glyphs(byval surface as cairo_surface_t ptr) as cairo_bool_t 检查是否支持高级文本渲染 图像表面创建 Declare Function cairo_image_surface_create(ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long) As cairo_surface_t Ptr 创建新图像表面 declare function cairo_format_stride_for_width(byval format as cairo_format_t, byval width as long) as long 计算行字节数 Declare Function cairo_image_surface_create_for_data(ByVal Data As UByte Ptr, ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long, ByVal stride As Long) As cairo_surface_t Ptr 从现有数据创建图像表面 图像表面信息 Declare Function cairo_image_surface_get_data(ByVal surface As cairo_surface_t Ptr) As UByte Ptr 获取像素数据指针 Declare Function cairo_image_surface_get_format(ByVal surface As cairo_surface_t Ptr) As cairo_format_t 获取像素格式 Declare Function cairo_image_surface_get_width(ByVal surface As cairo_surface_t Ptr) As Long Declare Function cairo_image_surface_get_height(ByVal surface As cairo_surface_t Ptr) As Long 获取尺寸 Declare Function cairo_image_surface_get_stride(ByVal surface As cairo_surface_t Ptr) As Long 获取行字节数 PNG 图像加载 Declare Function cairo_image_surface_create_from_png(ByVal filename As Const ZString Ptr) As cairo_surface_t Ptr 从PNG文件创建 declare function cairo_image_surface_create_from_png_stream(byval read_func as cairo_read_func_t, byval closure as any ptr) as cairo_surface_t ptr 从流加载PNG 录制表面 declare function cairo_recording_surface_create(byval content as cairo_content_t, byval extents as const cairo_rectangle_t ptr) as cairo_surface_t ptr 创建录制表面(记录绘制操作) declare sub cairo_recording_surface_ink_extents(byval surface as cairo_surface_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval width as double ptr, byval height as double ptr) 获取绘制内容的实际范围 Declare Function cairo_recording_surface_get_extents(ByVal surface As cairo_surface_t Ptr, ByVal extents As cairo_rectangle_t Ptr) As cairo_bool_t 获取录制区域边界 图案(Pattern) 光栅源图案(动态生成图案) declare function cairo_pattern_create_raster_source(byval user_data as any ptr, byval content as cairo_content_t, byval width as long, byval height as long) as cairo_pattern_t ptr 创建光栅源图案,允许动态生成像素数据,设置获取、释放、快照等回调函数 declare sub cairo_raster_source_pattern_set_callback_data(byval pattern as cairo_pattern_t ptr, byval data as any ptr) declare function cairo_raster_source_pattern_get_callback_data(byval pattern as cairo_pattern_t ptr) as any ptr 光栅源回调函数管理:回调用户数据 declare sub cairo_raster_source_pattern_set_acquire(byval pattern as cairo_pattern_t ptr, byval acquire as cairo_raster_source_acquire_func_t, byval release as cairo_raster_source_release_func_t) declare sub cairo_raster_source_pattern_get_acquire(byval pattern as cairo_pattern_t ptr, byval acquire as cairo_raster_source_acquire_func_t ptr, byval release as cairo_raster_source_release_func_t ptr) 光栅源回调函数管理:获取/释放图像数据 declare sub cairo_raster_source_pattern_set_snapshot(byval pattern as cairo_pattern_t ptr, byval snapshot as cairo_raster_source_snapshot_func_t) declare function cairo_raster_source_pattern_get_snapshot(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_snapshot_func_t 光栅源回调函数管理:创建数据快照 declare sub cairo_raster_source_pattern_set_copy(byval pattern as cairo_pattern_t ptr, byval copy as cairo_raster_source_copy_func_t) declare function cairo_raster_source_pattern_get_copy(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_copy_func_t 光栅源回调函数管理:图案复制回调 declare sub cairo_raster_source_pattern_set_finish(byval pattern as cairo_pattern_t ptr, byval finish as cairo_raster_source_finish_func_t) declare function cairo_raster_source_pattern_get_finish(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_finish_func_t 光栅源回调函数管理:完成清理回调 基本图案创建 declare function cairo_pattern_create_rgb(byval red as double, byval green as double, byval blue as double) as cairo_pattern_t ptr 创建RGB颜色 declare function cairo_pattern_create_rgba(byval red as double, byval green as double, byval blue as double, byval alpha as double) as cairo_pattern_t ptr 创建RGBA颜色(带透明度) declare function cairo_pattern_create_for_surface(byval surface as cairo_surface_t ptr) as cairo_pattern_t ptr 从表面创建图案 declare function cairo_pattern_create_linear(byval x0 as double, byval y0 as double, byval x1 as double, byval y1 as double) as cairo_pattern_t ptr 创建线性渐变 declare function cairo_pattern_create_radial(byval cx0 as double, byval cy0 as double, byval radius0 as double, byval cx1 as double, byval cy1 as double, byval radius1 as double) as cairo_pattern_t ptr 创建径向渐变 declare function cairo_pattern_create_mesh() as cairo_pattern_t ptr 创建网格渐变(最灵活的渐变) 图案管理 declare function cairo_pattern_reference(byval pattern as cairo_pattern_t ptr) as cairo_pattern_t ptr 生命周期管理:增加引用计数 declare sub cairo_pattern_destroy(byval pattern as cairo_pattern_t ptr) 生命周期管理:减少引用计数 declare function cairo_pattern_get_reference_count(byval pattern as cairo_pattern_t ptr) as ulong 生命周期管理:获取引用计数 Declare Function cairo_pattern_status(ByVal PATTERN As cairo_pattern_t Ptr) As cairo_status_t 状态和用户数据:检查图案状态 Declare Function cairo_pattern_get_user_data(ByVal PATTERN As cairo_pattern_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr Declare Function cairo_pattern_set_user_data(ByVal PATTERN As cairo_pattern_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t 状态和用户数据:用户数据管理 declare function cairo_pattern_get_type(byval pattern as cairo_pattern_t ptr) as cairo_pattern_type_t 获取图案类型,返回:实体、表面、线性渐变、径向渐变、网格等类型 Declare Sub cairo_pattern_add_color_stop_rgb(ByVal PATTERN As cairo_pattern_t Ptr, ByVal offset As Double, ByVal red As Double, ByVal green As Double, ByVal blue As Double) 添加RGB颜色停止点 declare sub cairo_pattern_add_color_stop_rgba(byval pattern as cairo_pattern_t ptr, byval offset as double, byval red as double, byval green as double, byval blue as double, byval alpha as double) 添加RGBA颜色停止点(带透明度) 网格图案操作(高级渐变) declare sub cairo_mesh_pattern_begin_patch(byval pattern as cairo_pattern_t ptr) 开始新补丁 declare sub cairo_mesh_pattern_end_patch(byval pattern as cairo_pattern_t ptr) 结束当前补丁 declare sub cairo_mesh_pattern_curve_to(byval pattern as cairo_pattern_t ptr, byval x1 as double, byval y1 as double, byval x2 as double, byval y2 as double, byval x3 as double, byval y3 as double) 移动到起始点 declare sub cairo_mesh_pattern_line_to(byval pattern as cairo_pattern_t ptr, byval x as double, byval y as double) 添加直线段 declare sub cairo_mesh_pattern_move_to(byval pattern as cairo_pattern_t ptr, byval x as double, byval y as double) 添加贝塞尔曲线 declare sub cairo_mesh_pattern_set_control_point(byval pattern as cairo_pattern_t ptr, byval point_num as ulong, byval x as double, byval y as double) 设置控制点 declare sub cairo_mesh_pattern_set_corner_color_rgb(byval pattern as cairo_pattern_t ptr, byval corner_num as ulong, byval red as double, byval green as double, byval blue as double) 设置角点RGB颜色 declare sub cairo_mesh_pattern_set_corner_color_rgba(byval pattern as cairo_pattern_t ptr, byval corner_num as ulong, byval red as double, byval green as double, byval blue as double, byval alpha as double) 设置角点RGBA颜色(带透明度) Declare Sub cairo_pattern_set_matrix(ByVal PATTERN As cairo_pattern_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr) 设置图案变换矩阵 Declare Sub cairo_pattern_get_matrix(ByVal PATTERN As cairo_pattern_t Ptr, ByVal matrix As cairo_matrix_t Ptr) 获取当前变换矩阵 图案延伸模式 Declare Sub cairo_pattern_set_extend(ByVal PATTERN As cairo_pattern_t Ptr, ByVal extend As cairo_extend_t) 设置图案延伸模式,控制当图案小于填充区域时的重复方式 Declare Function cairo_pattern_get_extend(ByVal PATTERN As cairo_pattern_t Ptr) As cairo_extend_t 获取当前延伸模式 延伸模式类型(cairo_extend_t枚举): CAIRO_EXTEND_NONE - 不延伸 图案区域外不绘制(透明) CAIRO_EXTEND_REPEAT - 平铺重复(默认)图案在水平和垂直方向重复 CAIRO_EXTEND_REFLECT - 镜像反射 图案以镜像方式重复 CAIRO_EXTEND_PAD - 边缘填充 用边缘像素颜色填充外部区域 图案过滤和查询 declare sub cairo_pattern_set_filter(byval pattern as cairo_pattern_t ptr, byval filter as cairo_filter_t) 设置缩放过滤算法,过滤类型:最近邻、双线性、高斯等 declare function cairo_pattern_get_filter(byval pattern as cairo_pattern_t ptr) as cairo_filter_t 获取当前过滤算法 Declare Function cairo_pattern_get_rgba(ByVal PATTERN As cairo_pattern_t Ptr, ByVal red As Double Ptr, ByVal green As Double Ptr, ByVal blue As Double Ptr, ByVal Alpha As Double Ptr) As cairo_status_t 获取实体颜色值(RGB/RGBA图案) declare function cairo_pattern_get_surface(byval pattern as cairo_pattern_t ptr, byval surface as cairo_surface_t ptr ptr) as cairo_status_t 获取表面图案的源表面 declare function cairo_pattern_get_color_stop_rgba(byval pattern as cairo_pattern_t ptr, byval index as long, byval offset as double ptr, byval red as double ptr, byval green as double ptr, byval blue as double ptr, byval alpha as double ptr) as cairo_status_t declare function cairo_pattern_get_color_stop_count(byval pattern as cairo_pattern_t ptr, byval count as long ptr) as cairo_status_t 获取渐变颜色停止点信息 declare function cairo_pattern_get_linear_points(byval pattern as cairo_pattern_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval x1 as double ptr, byval y1 as double ptr) as cairo_status_t 获取线性渐变端点 declare function cairo_pattern_get_radial_circles(byval pattern as cairo_pattern_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval r0 as double ptr, byval x1 as double ptr, byval y1 as double ptr, byval r1 as double ptr) as cairo_status_t 获取径向渐变圆参数 declare function cairo_mesh_pattern_get_patch_count(byval pattern as cairo_pattern_t ptr, byval count as ulong ptr) as cairo_status_t 获取补丁数量 declare function cairo_mesh_pattern_get_path(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong) as cairo_path_t ptr 获取补丁路径 declare function cairo_mesh_pattern_get_corner_color_rgba(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong, byval corner_num as ulong, byval red as double ptr, byval green as double ptr, byval blue as double ptr, byval alpha as double ptr) as cairo_status_t 获取角点颜色 declare function cairo_mesh_pattern_get_control_point(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong, byval point_num as ulong, byval x as double ptr, byval y as double ptr) as cairo_status_t 获取控制点坐标 矩阵操作 declare sub cairo_matrix_init(byval matrix as cairo_matrix_t ptr, byval xx as double, byval yx as double, byval xy as double, byval yy as double, byval x0 as double, byval y0 as double) 完整初始化6个参数 declare sub cairo_matrix_init_identity(byval matrix as cairo_matrix_t ptr) 初始化为单位矩阵 declare sub cairo_matrix_init_translate(byval matrix as cairo_matrix_t ptr, byval tx as double, byval ty as double) 初始化为平移矩阵 declare sub cairo_matrix_init_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double) 初始化为缩放矩阵 declare sub cairo_matrix_init_rotate(byval matrix as cairo_matrix_t ptr, byval radians as double) 初始化为旋转矩阵 declare sub cairo_matrix_translate(byval matrix as cairo_matrix_t ptr, byval tx as double, byval ty as double) 添加平移变换 declare sub cairo_matrix_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double) 添加缩放变换 declare sub cairo_matrix_rotate(byval matrix as cairo_matrix_t ptr, byval radians as double) 添加旋转变换 declare function cairo_matrix_invert(byval matrix as cairo_matrix_t ptr) as cairo_status_t 求逆矩阵 declare sub cairo_matrix_multiply(byval result as cairo_matrix_t ptr, byval a as const cairo_matrix_t ptr, byval b as const cairo_matrix_t ptr) 矩阵乘法(组合变换) Declare Sub cairo_matrix_transform_distance(ByVal matrix As Const cairo_matrix_t Ptr, ByVal dx As Double Ptr, ByVal dy As Double Ptr) 变换距离向量 Declare Sub cairo_matrix_transform_point(ByVal matrix As Const cairo_matrix_t Ptr, ByVal x As Double Ptr, ByVal y As Double Ptr) 变换点坐标 区域(Region) Declare Function cairo_region_create() As cairo_region_t Ptr 区域创建:创建空区域 Declare Function cairo_region_create_rectangle(ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_region_t Ptr 区域创建:从单个矩形创建 Declare Function cairo_region_create_rectangles(ByVal rects As Const cairo_rectangle_int_t Ptr, ByVal count As Long) As cairo_region_t Ptr 区域创建:从矩形数组创建 declare function cairo_region_copy(byval original as const cairo_region_t ptr) as cairo_region_t ptr 区域创建:复制区域 declare function cairo_region_reference(byval region as cairo_region_t ptr) as cairo_region_t ptr 生命周期管理:增加引用计数 declare sub cairo_region_destroy(byval region as cairo_region_t ptr) 生命周期管理:减少引用计数 declare function cairo_region_equal(byval a as const cairo_region_t ptr, byval b as const cairo_region_t ptr) as cairo_bool_t 生命周期管理:比较区域是否相等 declare function cairo_region_status(byval region as const cairo_region_t ptr) as cairo_status_t 生命周期管理:检查区域状态 Declare Sub cairo_region_get_extents(ByVal region As Const cairo_region_t Ptr, ByVal extents As cairo_rectangle_int_t Ptr) 区域信息查询:获取外接矩形 declare function cairo_region_num_rectangles(byval region as const cairo_region_t ptr) as long 区域信息查询:获取矩形数量 Declare Sub cairo_region_get_rectangle(ByVal region As Const cairo_region_t Ptr, ByVal nth As Long, ByVal Rectangle As cairo_rectangle_int_t Ptr) 区域信息查询:获取第n个矩形 declare function cairo_region_is_empty(byval region as const cairo_region_t ptr) as cairo_bool_t 区域信息查询:检查是否为空区域 Declare Function cairo_region_contains_rectangle(ByVal region As Const cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_region_overlap_t 包含性测试:检查矩形与区域关系,返回:完全在内部、部分重叠、完全在外部 declare function cairo_region_contains_point(byval region as const cairo_region_t ptr, byval x as long, byval y as long) as cairo_bool_t 包含性测试:检查是否包含点 declare sub cairo_region_translate(byval region as cairo_region_t ptr, byval dx as long, byval dy as long) 平移区域 declare function cairo_region_subtract(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t Declare Function cairo_region_subtract_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t 区域差集 declare function cairo_region_intersect(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t Declare Function cairo_region_intersect_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t 区域交集 declare function cairo_region_union(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t Declare Function cairo_region_union_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t 区域并集 declare function cairo_region_xor(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t Declare Function cairo_region_xor_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t 区域异或 调试函数 declare sub cairo_debug_reset_static_data() 重置静态数据,清理Cairo内部缓存(用于内存泄漏调试)
2026年-2月-3日
351 阅读
0 评论
VisualFreeBasic编程文档
2026-2-3
VisualFreeBasic绘画和图像编程
前言 在 Windows 图形用户界面中,屏幕上显示的所有元素——包括文字、图像、窗口、控件等——都是通过代码“绘制”出来的。VisualFreeBasic(VFB)通过封装 GDI/GDI+ 和集成 Cairo 图形库,让图形绘制变得简单直观。理解 Windows 的消息驱动机制和绘画事件,是掌握自定义图形界面的关键。 一、绘画机制概述 1.1 Windows 消息驱动机制 Windows 采用消息驱动模型,当窗口需要重绘时(如首次显示、从覆盖状态恢复、大小改变等),系统会向窗口发送 WM_PAINT 消息。开发者通过处理这些消息,在相应的事件中进行绘画操作。 1.2 绘画主体 在 VFB 中,绘画的主体可以是: 窗口:直接在窗口客户区进行绘制 控件:特定控件(如 Picture 控件)支持自定义绘制 1.3 图形库选择 yGDI:封装了 GDI 和 GDI+ 的类库,适合大多数 2D 图形操作 Cairo:跨平台的 2D 矢量图形库,支持高质量图形和透明效果 直接 GDI:使用 Windows API 直接操作设备上下文 二、窗口绘画 2.1 绘画事件 窗口提供两个主要的绘画事件: 2.1.1 FormPaintStart 事件 在系统绘制背景色之后、绘制虚拟控件之前触发,适合绘制背景或底层图形。 '[Form1]事件 : 重绘开始,刚画好背景色,还没画虚拟控件,用 gg 来画。 'hWndForm 当前窗口的句柄(WIN系统用来识别窗口的一个编号,如果多开本窗口,必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码) 'gg yGDI画画类,封装了 GDI和GDI+的 API操作类,方便绘画。 'nBackColor 窗口背景颜色(GDI颜色值,由设计时设置) '若要用Cairo绘图:Dim ca As Cairo = gg.m_Dc Function Form1_FormPaintStart(hWndForm As hWnd,gg As yGDI,nBackColor As Long) As LResult Function = FALSE ' 若不想系统继续画虚拟控件等,则应返回 TRUE 。 End Function 返回值说明 FALSE: 允许系统继续默认的绘画流程 TRUE: 停止系统绘画流程,完全由自定义代码控制 2.1.2 FormPaintEnd 事件 在所有虚拟控件绘制完成后触发,适合绘制覆盖在控件之上的图形。 '[Form1]事件 : 重绘最后,已经画好虚拟控件,用 gg 来画。 'hWndForm 当前窗口的句柄(WIN系统用来识别窗口的一个编号,如果多开本窗口,必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码) 'gg yGDI画画类,封装了 GDI和GDI+的 API操作类,方便绘画。 'nBackColor 窗口背景颜色(GDI颜色值,由设计时设置) Sub Form1_FormPaintEnd(hWndForm As hWnd,gg As yGDI,nBackColor As Long) End Sub 三、控件绘画 3.1 Picture 控件 Picture 控件是专门用于自定义绘制的控件,常用于图表、游戏、动态图形等场景。 '[Form1.Picture1]事件 : 重绘,系统通知控件需要重新绘画。 'hWndForm 当前窗口的句柄(WIN系统用来识别窗口的一个编号,如果多开本窗口,必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码) 'hWndControl 当前控件的句柄(也是窗口句柄,如果多开本窗口,必须 Me.控件名.hWndForm = hWndForm 后才可以执行后续操作本控件的代码 ) Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult 1.使用yGDI库 Dim gg As yGDI = yGDI(hWndControl, GetSysColor(COLOR_WINDOW), True) 2.使用Cairo库 Dim ca As Cairo = cairo(hWndControl, 1) 3.直接DC Dim ps As PAINTSTRUCT Dim nDC As HDC = BeginPaint(hWndControl, @ps) '初始化并获取DC EndPaint(hWndControl, @ps) '结束绘画 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 3.2 其他控件的自定义绘制 某些控件(如 Button、ListBox)也支持自定义绘制,通常通过 OwnerDraw 模式实现,这涉及更高级的编程技巧。 四、常用绘画操作 4.1 基本图形绘制(使用 yGDI) ' 绘制线段 gg.Line(x1, y1, x2, y2, [颜色], [线宽]) ' 绘制矩形 gg.Rectangle(x, y, width, height, [边框颜色], [线宽], [填充颜色]) ' 绘制椭圆/圆形 gg.Ellipse(x, y, width, height, [边框颜色], [线宽], [填充颜色]) ' 绘制圆角矩形 gg.RoundRect(x, y, width, height, 圆角X, 圆角Y, [边框颜色], [线宽], [填充颜色]) ' 绘制多边形 Dim points(5) As POINT points(0).x = 100: points(0).y = 100 points(1).x = 150: points(1).y = 50 points(2).x = 200: points(2).y = 100 points(3).x = 180: points(3).y = 150 points(4).x = 120: points(4).y = 150 gg.Polygon(@points(0), 5, RGB(0, 0, 0), 2, RGB(200, 200, 255)) ' 绘制文字 gg.TextOut(x, y, "文本内容", [颜色], [字体名], [字体大小], [格式]) gg.TextOut(10, 10, "居中对齐示例", RGB(0, 0, 0), "宋体", 12, DT_CENTER) ' 绘制图像 Dim img As yImage = yImage("image.png") gg.DrawImage(img, x, y, [宽度], [高度]) 4.2 使用 Cairo 绘制 Dim ca As Cairo = cairo(hWndControl, 1) ' 1表示不缩放 ' 设置颜色(RGBA,0-1范围) ca.SetSourceRGB(0.2, 0.4, 0.8) ' 不透明 ca.SetSourceRGBA(0.2, 0.4, 0.8, 0.5) ' 半透明 ' 绘制 ca.Rectangle(10, 10, 100, 50) ca.Fill() ' 填充 ca.Stroke() ' 描边 ' 设置线宽 ca.SetLineWidth(2.5) ' 绘制曲线 ca.MoveTo(10, 10) ca.CurveTo(50, 50, 100, 20, 150, 80) ca.Stroke() ' 绘制文字 ca.SelectFont("Arial", 12, , , , TRUE) ca.TextOut(20, 30, "Cairo 文字") 五、高级技巧 5.1 预防闪耀 WIN系统里有一个背景刷新机制,就是需要刷新控件背景,发一个消息,是否要系统为你画背景,你不处理,系统就为你画一次背景。造成闪耀。 因此,需要在自定义消息中,把 WM_ERASEBKGND 消息返回 True ,操作系统就不去绘画了,也不会产生闪耀。 Function Form1_Picture1_Custom(hWndForm As hWnd, hWndControl As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult Select Case wMsg Case WM_ERASEBKGND Return True '防止擦除背景 End Select Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。 End Function 5.2 局部重绘优化 对于复杂图形,只重绘需要更新的区域可以提高性能。 ' 只重绘指定区域 Dim rect As RECT rect.left = 50: rect.top = 50 rect.right = 150: rect.bottom = 150 InvalidateRect(hWndControl, @rect, TRUE) ' 在绘画事件中获取需要重绘的区域 Function WM_Paint_WithUpdateRegion(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ps As PAINTSTRUCT Dim hDC As HDC = BeginPaint(hWndControl, @ps) ' ps.rcPaint 包含了需要重绘的区域 If ps.rcPaint.right - ps.rcPaint.left > 0 Then ' 只绘制脏矩形区域内的内容 Dim gg As yGDI = yGDI(hWndControl, , True) ' ... 绘制代码 ... End If EndPaint(hWndControl, @ps) Function = TRUE End Function
2026年-2月-3日
392 阅读
0 评论
VisualFreeBasic编程文档
2026-1-22
军棋迷使用说明
用在 QQ游戏,四国军棋 上的一个辅助工具软件。 软件运行后,有一个控制台 使用方法 直接开启 QQ游戏的 四国军棋 即可。 所有提示的窗口,可以拖动位置,调节大小,自己需要咋搞就咋搞。 打开选项,所有功能,都可以开关,收费免费功能,标注明显。 游戏上无提示窗口 查看一下是否有杀毒软件,特别是360,关闭后再试试 打开选项,随便安装一个试试 收费功能 注意: 必须免费使用正常后,才能使用收费功能,免费用不了,收费也用不了 点这里查看收费说明:勇芳软件收费功能使用说明文档
2026年-1月-22日
512 阅读
0 评论
勇芳系列软件帮助说明教程
2026-1-22
游戏管理器使用说明
用来方便使用QQ游戏大厅的软件,就一个按钮,新开游戏。 首次使用,准备工作:安装大厅 点击按钮,选择安装2015大厅 全部点下一步,直到安装完成 然后再点击新开,就有2015大厅了 首次使用,准备工作:大厅登录 用QQ号和密码会一直显示登录,无法登录 那需要先登录QQ,QQ任意版本,然后QQ游戏大厅上就有头像 直接点头像即可登录。 首次使用,准备工作:游戏列表 第一次使用时,无法看到游戏列表 关闭大厅2015旧版大厅 打开桌面上的最新版大厅 最新版大厅有列表,然后退出新大厅,新大厅,必须在小图标中,点右键退出 重新打开2015大厅,就会发现有游戏列表了。 首次使用,准备工作:每一个号进一次游戏 只有开一个大厅时,才可以安装游戏 然后进一次具体游戏,上一次桌子 多个QQ号,需要每一个QQ号,单独先进一次游戏。 平常使用 持续点新开,就能开出很多大厅 点击列表项目,切换显示大厅 嗯,就这么简单的使用方法。
2026年-1月-22日
583 阅读
0 评论
勇芳系列软件帮助说明教程
5
6
7
8
9