本工作室自主开发十多款实用软件,为纯绿色软件,安全可靠,不写注册表,不污染操作系统任何地方,绝不附带任何无关软件,绝不困绑任何插件,支持所有WindowsXP以上系统
论坛的首页 勇芳的软件
教程和帮助
  • VisualFreeBasic编程文档
  • 勇芳系列软件帮助说明教程
  • 留言或交流 登录
    登录
    侧边栏壁纸
    博主头像
    勇芳

    • 累计撰写 330 篇文章
    • 累计收到 0 条评论
    • 首页
    • 栏目
      • 论坛的首页
      • 勇芳的软件
      • 教程和帮助
        • VisualFreeBasic编程文档
        • 勇芳系列软件帮助说明教程
      • 留言或交流
      • 登录
    包含标签 【编程】 的文章
    • VisualFreeBasic第三方代码库_udis86反汇编 2026-1-21
      VisualFreeBasic第三方代码库_udis86反汇编 udis86是一款功能强大的反汇编器,以下是对它的简单介绍: 一、功能特性 多架构支持:主要针对 x86 和 x86 - 64 架构设计,能够准确地对这两种架构下的机器码进行反汇编。这意味着无论是 32 位还是 64 位的 x86 系列指令集,udis86都可以处理。 灵活的输入方式:它可以接受多种形式的输入,既可以从文件中读取二进制数据进行反汇编,也可以处理内存中的二进制代码缓冲区。这种灵活性使得它在不同的应用场景中都能发挥作用,比如分析可执行文件或者处理动态生成的机器码。 可定制化语法输出:支持不同风格的汇编指令语法输出。用户可以选择 Intel 风格或者 AT\&T 风格的汇编代码显示方式。例如,在 Intel 风格中,指令mov eax, ebx是一种常见的表示形式;而在 AT\&T 风格中,可能是mov %ebx, %eax。这满足了不同用户对于汇编代码阅读习惯的需求。 二、应用场景 逆向工程:在逆向分析软件时,udis86可以将二进制可执行文件反汇编成汇编语言,帮助分析人员理解程序的逻辑和功能。通过查看反汇编后的代码,可以了解程序中各个函数的实现细节、数据处理方式以及控制流的走向,从而发现潜在的安全漏洞或者分析软件的工作原理。 调试和分析工具开发:开发调试器或者其他二进制分析工具时,udis86是一个重要的组件。它可以被集成到这些工具中,用于实时地对正在运行的程序或者加载的二进制文件进行反汇编,为开发者提供底层的代码信息,辅助调试和问题排查。 安全研究:对于安全研究人员来说,udis86有助于分析恶意软件。通过反汇编恶意软件的二进制代码,可以揭示其恶意行为的实现机制,比如病毒如何感染其他文件、如何隐藏自身以及如何窃取用户信息等,进而开发相应的防御措施。 三、内部工作原理 指令解码:udis86根据 x86/x86 - 64 指令集的编码规则,对输入的机器码进行逐字节的分析和解读。它能够识别不同类型的指令前缀、操作码、操作数等信息。例如,对于一条带有前缀的指令,它可以准确地解析出前缀所代表的特殊含义(如地址大小前缀、操作数大小前缀等)以及后续操作码和操作数所构成的完整指令信息。 模式识别:根据预先设定的反汇编模式(16 位、32 位或 64 位),udis86在解码过程中采用相应的规则。不同的模式下,指令的长度、编码方式以及操作数的表示形式都可能有所不同。在 32 位模式下,它会按照 32 位指令集的规范来解析指令,确保对机器码的正确理解和反汇编。 符号解析(可选):在一些复杂的场景中,udis86还可以与符号解析功能相结合。当遇到内存地址等信息时,可以通过符号解析器将其转换为更有意义的符号表示,帮助用户更好地理解反汇编结果。例如,将一个地址解析为对应的函数名或变量名(如果这些信息在相关的符号表中有记录)。 使用方法 Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) RichEdit1.Text = udis86反汇编(@Form1_Command1_BN_Clicked, 100,32) End Sub 你没看错,就这么简单,在 窗口上放一个 Command1 和 RichEdit1 控件。 RichEdit1 控件字体设置为“宋体” 假如你需要定制的 汇编代码,选择“udis86反汇编”,然后
      • 2026年-1月-21日
      • 63 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic第三方代码库_MiniXML小型XML解析器 2026-1-21
      VisualFreeBasic第三方代码库_MiniXML小型XML解析器 简单说明 MiniXML 是一个小型的开源的 XML 解析器15。它具有以下特点: 轻量级与独立性2: 代码量小,易于集成到项目中,对系统资源的占用较少,非常适合在资源受限的环境中使用,如嵌入式系统等。 不依赖其他大型类库,只需要 C99 兼容的编译器(如 GCC)和 make 程序即可进行编译。 功能特性: 数据编码支持:支持读取 UTF-8 和 UTF-16 编码的 XML 文件以及字符串,并且可以写 UTF-8 编码的 XML 文件和字符串15。 数据存储结构:数据存储在链表树结构中,能够很好地保留 XML 数据的层次结构。 节点操作:提供了创建、修改和管理 XML 节点的功能。每个 XML 文件中的信息片段(元素、文本、数字等)被视为一个存储在内存中的 “节点”,通过相关函数可以方便地对节点进行操作9。 属性支持:支持任意元素名称、属性以及属性值的操作,没有预设的限制,仅受限于可用内存5。 接口简洁:提供的 API 简洁直观,易于上手和使用,开发人员可以快速地将其集成到自己的项目中3。 不过,MiniXML 也存在一定的局限性,比如它并不支持如 XML 命名空间或 Schema 验证等高级功能3。尽管如此,对于一些对资源占用和性能要求较高,且不需要复杂 XML 功能的应用场景,MiniXML 仍然是一个不错的选择3。 使用方法 里面有不同的 API,详细使用方法见 https://www.msweet.org/mxml/mxml.html 加载文件 Dim root As mxml_node_t Ptr = LoadXMLFile("test.xml") If root = 0 Then Print "错误: LoadXMLFile() !" Else Print "类型 : " & NodeTypeAsString(mxmlGetType(root)) Print "refCount: " & mxmlGetRefCount(root) mxmlRelease(root) Print "refCount: " & mxmlGetRefCount(root) End If 后面就可以直接使用 MiniXML 的API 进行各种操作了。
      • 2026年-1月-21日
      • 47 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic第三方代码库_大漠函数库 2026-1-21
      VisualFreeBasic第三方代码库_大漠函数库 简绍 大漠函数库是大漠综合工具的重要组成部分,为用户提供了丰富的功能接口,方便进行自动化操作、网页抓取、数据提取、网页模拟操作等4。以下是对大漠函数库的一些介绍: 核心文件: dm.dll:这是大漠插件的主体功能库,包含了众多基本的操作函数,例如图像识别、鼠标键盘模拟、窗口操作等功能的实现都依赖于这个动态链接库。 主要函数及功能: 图像识别相关函数: FindPic:用于在指定区域内查找指定的图片,返回找到的图片的坐标位置。这在自动化操作中非常重要,比如在游戏中寻找特定的图标、按钮等元素。 FindMultiColor:可以在给定区域内查找多个颜色组合,适用于颜色特征比较明显的图像识别场景,比单一颜色的查找更灵活、准确。 鼠标键盘模拟函数: MoveTo:将鼠标移动到指定的坐标位置,模拟鼠标的移动操作,在需要自动点击、拖动等操作时,通常会先使用这个函数将鼠标移动到目标位置。 LeftClick:模拟鼠标的左键点击操作,常用于执行点击按钮、选择选项等操作。 KeyPress:模拟键盘按键的按下操作,可以输入指定的字符或触发特定的键盘事件。 窗口操作函数: FindWindow:根据窗口的类名或标题名查找顶层窗口的句柄,通过获取窗口句柄,可以对指定的窗口进行操作1。 GetForegroundWindow:获取当前处于顶层活动的窗口句柄,方便对当前正在操作的窗口进行监控和操作1。 MoveWindow:可以移动指定的窗口到指定的位置,实现窗口的位置调整1。 系统信息获取函数: GetOSType:用于获取操作系统的版本信息,以便根据不同的操作系统版本进行相应的操作适配1。 GetModuleBaseAddr:能够获取其他进程的模块的地址,对于需要与其他进程进行交互或获取其内部信息的操作非常有用1。 应用场景: 游戏自动化:在游戏中,可以使用大漠函数库实现自动打怪、自动采集、自动完成任务等操作,提高游戏效率和体验。例如,通过图像识别找到怪物的位置,然后使用鼠标模拟点击进行攻击6。 网页自动化测试:在网页测试中,可以模拟用户的操作,如点击链接、填写表单、验证页面内容等,帮助测试人员快速、准确地进行测试。 办公自动化:在办公场景中,可以实现一些重复性的操作自动化,如自动填写表格、批量处理文件等,节省时间和提高工作效率。 使用方法(只支持32位软件) 临时使用(初始使用会加载库DLL文件,函数结束会释放DLL) Dim dm As dmsoft 如果你代码中大量使用,建议定义全局变量比较好 Dim Shared dm As dmsoft 声明以后,就可以这样用了 Print dm.Ver Print dm.SetPath (App.Path ) 函数大几百个,dm.xxxx 相关函数开大漠编程文档查看 敲了 dm. 然后是大漠里查找到的函数,即可使用。 大漠编程文档 点击分类名,然后点击 纸飞机图标
      • 2026年-1月-21日
      • 55 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic第三方代码库_JSON 数据交换 2026-1-21
      VisualFreeBasic第三方代码库_JSON 数据交换 JSON 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于 JavaScript 编程语言的一个子集,但现在被许多编程语言广泛支持,用于在不同系统之间传输和存储数据。 JSON 数据格式具有简洁、易读、易于编写和解析的特点,它以文本形式表示结构化数据,通常用于网络通信中的 API(应用程序接口)响应,配置文件等场景。 cJSON 简介 cJSON 是一个用 C 语言编写的 JSON 数据解析库,它体积小、速度快 cJSON_type 简介 基于cJSON 封装的类,用于读写JSON文件或数据,让原本复杂繁琐的操作,一行代码解决。 绑定文件或数据 类和文件绑定,那么修改数据后,它会自动保存到文件 Dim js As JSON = App.Path & "1.txt" 类和数据绑定 Dim js As JSON = JSON 数据 修改内容后可以自己执行保存到文件 js.SaveFile(文件名) 中途绑定文件 Dim js As JSON js.FileName = 文件名 中途设置数据 Dim js As JSON js.JsonData = JSON 数据 读取数据 读取项目数据 aa = js.ValueStr("根项目名\子项目名\子项目名") bb= js.ValueDouble("根项目名\子项目名\子项目名") 举例: JSON文件内容: { "firstName":"John" , "lastName":{"id":"Doe"} } Print js.ValueStr("firstName") 输出:John Print js.ValueStr("lastName\id") 输出:Doe 读取项目数组(#后面数字是 数组索引) aa = js.ValueStr("根项目名\子项目名\#0") bb = js.ValueDouble("根项目名\子项目名\#0") 举例: JSON文件内容: { "firstName":"John" , "lastName":[{"id":"Doe"},{"id":"Doe2"}] } Print js.ValueStr("lastName\#0\id") 输出:Doe2 Print js.ValueStr("lastName\#1\id") 输出:Doe2 修改或增加数据 项目数据 js.ValueStr("根项目名\子项目名\子项目名") =“数据” js.ValueDouble("根项目名\子项目名\子项目名") = 999 项目数组(#后面数字是 数组索引) js.ValueStr("根项目名\子项目名\#0") = “数据” js.ValueDouble("根项目名\子项目名\#0") = 999 删除项目 js.DetachItem("根项目名\子项目名\子项目名") 获取所有的键名 获取根项目键名 Dim ee() As String js.GetAllKey("", ee()) 获取项目键名 Dim ee() As String js.GetAllKey("根项目名\子项目名\子项目名", ee())
      • 2026年-1月-21日
      • 58 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic第三方代码库_Cairo 矢量绘图库 2026-1-21
      VisualFreeBasic第三方代码库_Cairo 矢量绘图库 简单介绍 cairo(http://cairographics.org),Linux的两大流行桌面环境KDE和Gnome,其对应的基础组件是QT和GTK+,相对于框架性质的QT,GTK+则依然保持着自由与开放的传统,从底层绘图到上层程序库都由其他开源库组成,cairo就是GTK+采用的底层图形库,负责构建图形界面。cairo是一款开源的2d矢量图形库,支持多种后端输出,用c语言编写而且模块化设计得很出色。 安装cairo库 查看:https://3ep4xmzg24.k.topthink.com/@visualfreebasic/daoruhedaochudaimaku.html 基本原理 cairo的绘图原理就是路径,先设置好路径,如:线、圆、框,以及更复杂的几何和曲线(文字也属于路径)。然后用 画线命令描绘路径,或者用填充命令,来填充路径。还有可以给路径贴图。 明白原理后,后面的使用方法和cairo函数的使用就很容易理解了。 准备工作 主动绘图模式 绑定DC Dim DC As HDC = GetDC(Picture1.hWnd) Dim ca As Cairo = DC '画画开始----------------------------- Ca.ht清空画板(GetSysColor(COLOR_BTNFACE)) '用一个颜色清空画板 ...........一系列画画 '画画完成 ------------------------------- Ca.xs显示画面'显示输出 ReleaseDC Picture1.hWnd, DC '销毁DC 绑定窗口句柄 Dim ca As Cairo = Picture1.hWnd '画画开始----------------------------- ca.ht清空画板(GetSysColor(COLOR_BTNFACE)) '用一个颜色清空画板 ...........一系列画画 '画画完成 -----------当函数结束, Ca 变量被回收前会自动执行 Ca.xs显示画面 被动绘图模式(刷新模式,必须在绘画事件里使用) Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl,1) '画画开始----------------------------- ca.ht清空画板(GetSysColor(COLOR_BTNFACE)) '用一个颜色清空画板 '画个矩形框线 ca.ht绘矩形(10, 10, 50, 50,0,&HFFFF0000 ,4) '画个矩形 ca.ht绘矩形(70, 10, 50, 50,&HFF0000FF) ''画文字 ca.zb旋转(10,100,30) ca.wz文字样式("黑体") ca.ht绘文字 10, 100, 22, "你好Cairo绘画", &HFFC7C53C Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 坐标系和坐标单位 坐标原点(0, 0)位于绘图表面(窗口或控件)的左上角。x 轴正方向是从左向右,y 轴正方向是从上向下。 坐标单位为,像素。支持系统的 DPI ,确保在用户在任何系统中,都显示同比例的大小。 假如,系统的DPI是 125%,你画的 正方形,设置参数为 100像素,那么真实显示的是 125像素,不同系统的DPI,会自动缩放,我们编写软件,就按照 100像素编写即可。 绘图过程1:必要功能 附加功能 Function CairoHandle() As cairo_t Ptr '获取与WINDC绑定后的 Cairo 句柄 ,未绑定返回 0 ,关闭窗口后自动销毁。 Function Version() As String '获取 Cairo 支持库 版本号 Sub SavePNG(PngFileName As Wstring) '将当前的图像保存到 PNG文件 Function LoadPNG(PngFileName As Wstring) As CairoImage ' 预先加载PNG图像文件,用于频繁使用的图像 Declare Sub xs显示画面() '显示出图像,每次画画开始设置 WinDC() 最后显示输出 ,显示输出后,下次画必须再使用 WinDC() 坐标系,拼音zb带头 Sub zb缩放(x As Single, y As Single) '缩放,每次缩放都是从初始大小开始进行缩放(初始大小已经响应系统DPI) Sub zb旋转(x As Single, y As Single, 角度 As Single) '旋转,从x,y 为中心 度(0--360)正数顺时针,负数逆时针旋转。每次都从初始角度0度开始。不是累计旋转。 Sub zb平移(x As Single, y As Single) '平移坐标系,让后来的设置的坐标都按照此坐标偏移(每次偏移都从初始位置开始,不会累计偏移) Sub zb裁剪(bValue As BOOLEAN) '裁剪,先定义一个路径才执行裁剪 绘图过程2:路径操作 用过 PS 的都明白“路径”是什么,路径是一种用于精确绘制形状的工具。它就像是用线条连接起来的一系列点。比方矩形、圆、曲线等。 用于后续的填充和描边绘画. 路径操作,路径,拼音lj带头 Sub lj新的子路径() ' 开始一个新的子路径,与上一个路径隔离开来,不然路径会自动相连在一起。 Sub lj封闭路径() '封闭路径 Sub lj返回当前坐标(ByRef x As Single, ByRef y As Single) '返回当前坐标 Sub lj设置绝对坐标(x As Single, y As Single) '设置路径的当前绝对坐标 Sub lj设置相对坐标(x As Single, y As Single) '设置路径的当前相对坐标 Sub lj直线到绝对坐标(x As Single, y As Single) '路径的直线,从当前坐标画直线到目标坐标,并设置目标坐标为当前坐标 Sub lj直线到相对坐标(x As Single, y As Single) '路径的直线,(目标坐标是相对与当前坐标) 从当前坐标画直线到目标坐标,并设置目标坐标为当前坐标 Sub lj矩形(x As Single, y As Single, w As Single, h As Single) '路径的矩形,坐标是绝对坐标,单位是系统DPI100%的像素(会受到坐标系影响) Sub lj矩形圆角(x As Single, y As Single, w As Single, h As Single, r1 As Single, r2 As Single, r3 As Single, r4 As Single) '路径的圆角矩形,r1-4为圆角半径 左上角,左下角,右上角,右下角 Sub lj弧线(圆心x As Single, 圆心y As Single, 半径X As Single, 半径Y As Single, 起始角度 As Single, 终止角度 As Single, 时针 As Long = 0) '路径的弧线/椭圆,参数:圆弧中心,半径,起始角度(0--360),终止角度(0--360),顺时针=0/逆时针<>0 Sub lj三次贝塞尔曲线绝对坐标(x1 As Single, y1 As Single, x2 As Single, y2 As Single, x As Single, y As Single) '路径的三次贝塞尔曲线(绝对坐标),参数:第1个控制点x1y1,第2个控制点x2y2,曲线末端xy Sub lj三次贝塞尔曲线相对坐标(dx1 As Single, dy1 As Single, dx2 As Single, dy2 As Single, dx As Single, dy As Single) '路径的三次贝塞尔曲线(相对坐标),参数:第1个控制点x1y1,第2个控制点x2y2,曲线末端xy Sub lj文字(x As Single, y As Single, Text As Wstring) '将文本的闭合路径添加到当前路径 绘图过程3:文字设置 文字也属于路径,为方便理解,独立归类。操作循序和路径同一个级别 文字,拼音wz带头 Sub wz文字样式(Family As Wstring, 倾斜 As Long = CAIRO_FONT_SLANT_NORMAL, 加粗 As Long = CAIRO_FONT_WEIGHT_NORMAL) '文字样式,参数: 样式名(可以直接用字体名称),字体的倾斜,字体的粗细 Sub wz文字尺寸(SIZE As Single) '文字尺寸,像素单位 Sub wz文字路径(Text As Wstring) '将文本的闭合路径添加到当前路径,位置是当前坐标,当前坐标是文字的左上角 绘图过程4:色彩设置 色彩,拼音sc带头 Sub sc单色RGB(GDI色 As Long) '设置填充或框线颜色(GDI色) 用:BGR(r, g, b) :Cairo里称为:来源 Sub sc单色RGBA(GDIpro色 As ARGB) '设置填充或框线颜色(GDI+)颜色,带透明度 A ,用:RGBA (r, g, b, a) :Cairo里称为:来源 Sub sc线性渐变RGB(颜色1 As Long, x1 As Single, y1 As Single, 颜色2 As Long, x2 As Single, y2 As Single) '设置线性渐变,参数为颜色1 到颜色2渐变(GDI色) 用:BGR(r, g, b) Sub sc线性渐变RGBA(颜色1 As ARGB, x1 As Single, y1 As Single, 颜色2 As ARGB, x2 As Single, y2 As Single) '设置线性渐变,参数为颜色1 到颜色2渐变(GDI+)颜色,带透明度 A ,用:RGBA (r, g, b, a) Sub sc辐射渐变RGB(颜色1 As Long, cx1 As Single, cy1 As Single, 半径1 As Single, 颜色2 As Long, cx2 As Single, cy2 As Single, 半径2 As Single) '设置径向渐变,参数为颜色1 到颜色2渐变(GDI色) 用:BGR(r, g, b) 颜色,圆心xy,圆的半径,一般用法:2个圆心相同,第1个圆半径=0 第2个半径是填充的尺寸。 Sub sc辐射渐变RGBA(颜色1 As ARGB, cx1 As Single, cy1 As Single, 半径1 As Single, 颜色2 As ARGB, cx2 As Single, cy2 As Single, 半径2 As Single) '设置径向渐变,参数为颜色1 到颜色2渐变(GDI+)颜色,带透明度 A ,用:RGBA (r, g, b, a) 颜色,圆心xy,圆的半径,一般用法:2个圆心相同,第1个圆半径=0 第2个半径是填充的尺寸。 Sub sc贴图PNG(PngFileName As Wstring, x As Single, y As Single, extend As Long = CAIRO_EXTEND_NONE, w As Single = 0, h As Single = 0) '设置用PNG图像文件来 填充或框线 ,xy是贴图开始位置 :Cairo里称为:来源 Sub sc贴图(cIMG As CairoImage, x As Single, y As Single, extend As Long = CAIRO_EXTEND_NONE, w As Single = 0, h As Single = 0) '设置用图像 填充或框线 ,xy是贴图开始位置 :Cairo里称为:来源 绘图过程4:线框设置 线框,拼音xk带头 Property xk线框粗细(nWidth As Single) '设置/获取 线条宽度,单位像素 Property xk线框粗细() As Single Property xk线帽样式(线帽 As Long) '设置/获取 线帽 Property xk线帽样式() As Long Property xk折线形状(角的形状 As Long) '设置/获取折线处形状(角的形状) Property xk折线形状() As Long Sub xk虚线样式(起始偏移量 As Single, 实线1 As Single = 0, 虚线1 As Single = 0, 实线2 As Single = 0, 虚线2 As Single = 0, 实线3 As Single = 0, 虚线3 As Single = 0, 实线4 As Single = 0, 虚线4 As Single = 0) '设置线条的虚线模式,实线虚线,交替设置,形成点线。 绘图过程5:描绘显示 这是最后一步,把路径描绘出来。如此重复 1 到 5 的过程,绘画每一个单独的图像。 描绘,拼音mh带头 Sub mh描线(销毁路径 As Long) '描绘路径的线框 Sub mh填充(销毁路径 As Long) '填充路径, Property mh重叠模式(fill_rule As Long) '设置/获取 路径和路径发生重叠后,重叠部分的填充模式 Property mh重叠模式() As Long 简化封装 以上一系列操作,组合成各种画法,更复杂和精准,有时候我们就简单的画点东西,就用到此封装。 绘图,拼音ht带头 '几何图形简化封装 -------------------- Sub ht清空画板(GDI色 As Long = &HFFFFFF) '清空画板,颜色(GDI色) 用:BGR(r, g, b) Sub ht绘文字(x As Single, y As Single, Font_Size As Single, Text As Wstring, 填充色 As ARGB = GDIP_ARGB(255, 0, 0, 0), 线条色 As ARGB = 0, 线条粗细 As Single = 1) '直接描绘文字,用 wz文字样式 设置字体 ,颜色=0 表示不填充或不描边 Sub ht绘矩形(x As Single, y As Single, w As Single, h As Single, 填充色 As ARGB = 0, 线条色 As ARGB = 0, 线条粗细 As Single = 1) '描绘矩形,颜色=0 表示不填充或不描边 Sub ht绘椭圆(圆心x As Single, 圆心y As Single, 半径X As Single, 半径Y As Single, 填充色 As ARGB = 0, 线条色 As ARGB = 0, 线条粗细 As Single = 1) '描绘椭圆(圆心x, 圆心y,w半径,h半径),颜色=0 表示不填充或不描边 Sub ht绘直线(X1 As Single, Y1 As Single, X2 As Single, Y2 As Single, Line_Width As Single = 1, 线条色 As ARGB = &HFF000000) ' 画线条,位置1到位置2 Sub ht绘矩形圆角(x As Single, y As Single, w As Single, h As Single, r1 As Single, r2 As Single, r3 As Single, r4 As Single, 填充色 As ARGB = 0, 线条色 As ARGB = 0, 线条粗细 As Single = 1) '描绘一个圆角矩形,r1-4为圆角半径 左上角,左下角,右上角,右下角,颜色=0 表示不填充或不描边 '图像显示简化封装 ------------------ Sub ht绘PNG图像(PngFileName As Wstring, x As Single, y As Single, w As Single = 0, h As Single = 0) '描绘PNG图像,WH =0 按默认大小画 Sub ht绘图像(cIMG As CairoImage, x As Single, y As Single, w As Single = 0, h As Single = 0) '描绘图像,WH =0 按默认大小画,频繁使用的图像,需要先加载再用本函数显示 图像文件预加载 假如一个图像频繁使用,就需要预先加载,让它能快速 使用 Function LoadPNG(PngFileName As Wstring)As CairoImage ' 预先加载PNG图像文件,用于频繁使用的图像 Sub sc贴图(cIMG As CairoImage,x As Single,y As Single,extend As Long ) '设置用图像 填充或框线 Sub ht绘图像(cIMG As CairoImage,x As Single,y As Single,w As Single=0, h As Single=0) '描绘图像,WH =0 按默认大小画,频繁使用的图像,需要先加载再用本函数显示 一些例题 弧线 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) '画画开始----------------------------- ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 '画一个弧线 ca.lj弧线 128, 128, 100, 100, 50, 200 ca.xk线框粗细 = 10 ca.sc单色RGBA &HFF000000 ca.mh描线(True) '画直线 ca.ht绘直线 128,128,34,93,5, &H85FF0000 ca.ht绘直线 128,128,193,206,5, &H85FF0000 '画圆心 ca.ht绘椭圆(128,128,10,10,&H85FF0000) Function = TRUE ' 告诉系统,我们自绘了(yGDI必须WM_PAINT初始化,若API必须用BeginPaint初始化),不需要系统绘画。 End Function 反向弧线 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) '画画开始----------------------------- ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 '画一个弧线 ca.lj弧线 128, 128, 100, 100, 200, 50 ca.xk线框粗细 = 10 ca.sc单色RGBA &HFF000000 ca.mh描线(True) '画直线 ca.ht绘直线 128,128,34,93,5, &H85FF0000 ca.ht绘直线 128,128,193,206,5, &H85FF0000 '画圆心 ca.ht绘椭圆(128,128,10,10,&H85FF0000) Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 裁剪区域 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) '画画开始----------------------------- ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.lj弧线 128, 128, 78, 78, 0, 360 '定义裁剪区域的路径 ca.zb裁剪 True '进入裁剪模式 ca.ht绘矩形 0, 0, 256, 256, &HFF000000 ca.ht绘直线 0, 0, 256, 256, 10, &HFF00FF80 ca.ht绘直线 256, 0, 0, 256, 10, &HFF00FF80 ca.zb裁剪 False Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 圆角矩形 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) '画画开始----------------------------- ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 Dim i As Long, cc(2) As ARGB = {&HFFB77777, &HFF804D99, &HFF8080FF} For i = 0 To 2 ca.ht绘矩形圆角 i * 5 + 25, i * 5 + 25, 200 - i * 10, 200 - i * 10, 50-i*3, 10-i*3, 30-i*3, 80-i*3, cc(i) Next Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 三次贝塞尔曲线 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 Dim As Double x = 25.6, y = 128.0 Dim As Double x1 = 102.4, y1 = 230.4, x2 = 153.6, y2 = 25.6, x3 = 230.4, y3 = 128.0 ca.sc单色RGB 0 '设置颜色 ca.xk线框粗细 = 10 '设置线条粗细 ca.lj设置绝对坐标 x, y '开始位置 ca.lj三次贝塞尔曲线绝对坐标 x1, y1, x2, y2, x3, y3 '三次贝塞尔曲线 ca.mh描线(True) '描绘路径 ca.ht绘直线 x, y, x1, y1, 6, &H95FF0000 '封装画线 ca.ht绘直线 x2, y2, x3, y3, 6, &H95FF0000 '封装画线 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 虚线 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.xk虚线样式(-50,50, 10, 10, 10) '设置虚线模式 ca.sc单色RGB 0 '设置颜色 ca.xk线框粗细 = 10 '设置线条粗细 ca.lj设置绝对坐标 128, 25.6 '开始位置 ca.lj直线到绝对坐标 230.4, 230.4 ca.lj直线到相对坐标 -102.4, 0 ca.lj三次贝塞尔曲线绝对坐标 51.2, 230.4, 51.2, 128.0, 128.0, 128.0 '三次贝塞尔曲线 ca.mh描线(True) '描绘路径 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 填充和描边 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.lj设置绝对坐标 128.0, 25.6 '开始位置(绝对坐标) ca.lj直线到绝对坐标 230.4, 230.4 '从当前坐标画直线到目标坐标(绝对坐标) ca.lj直线到相对坐标 -102.4, 0.0 '从当前坐标画直线到目标坐标(相对坐标) ca.lj三次贝塞尔曲线绝对坐标 51.2, 230.4, 51.2, 128.0, 128.0, 128.0 '三次贝塞尔曲线(绝对坐标) ca.lj封闭路径 '封闭路径 ca.lj设置绝对坐标 64.0, 25.6 '开始位置(绝对坐标) ca.lj直线到相对坐标 51.2, 51.2 '从当前坐标画直线到目标坐标(相对坐标) ca.lj直线到相对坐标 -51.2, 51.2 '从当前坐标画直线到目标坐标(相对坐标) ca.lj直线到相对坐标 -51.2, -51.2 '从当前坐标画直线到目标坐标(相对坐标) ca.lj封闭路径 '封闭路径 ca.sc单色RGB &HFF0000 '设置颜色 GDI色 ca.mh填充(False) '填充路径,保留路径,后面还要描绘 ca.xk线框粗细 = 10 '设置线粗细 ca.sc单色RGB 0 '设置颜色 GDI色 ca.mh描线(True) '描绘路径并且销毁路径。 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 填充样式 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.xk线框粗细 = 6 '设置线粗细 Dim i As Long For i = 0 To 1 ca.lj矩形 12, 12, 232, 70 '添加矩形路径 ca.lj新的子路径() '开始新路径 ca.lj弧线 64, 64, 40, 40, 0, 360 '添加圆形路径,顺时针 ca.lj新的子路径() '开始新路径 ca.lj弧线 192, 64, 40, 40, 360, 0, 1 '添加圆形路径,逆时针 ca.mh重叠模式 = IIf(i = 0, CAIRO_FILL_RULE_EVEN_ODD, CAIRO_FILL_RULE_WINDING) '填充模式,设置路径和路径的交叉地方是否要填充。 ca.sc单色RGB &HB300 '设置填充颜色 GDI色 ca.mh填充(False) ca.sc单色RGB 0 '设置线框颜色 GDI色 ca.mh描线(True) '描绘路径并且销毁路径。 ca.zb平移 0, 128 '平移坐标系 Next Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 渐变 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.sc线性渐变RGBA(&HFFFFFFFF, 0, 0, &HFF000000, 0, 256) '创建线性渐变 ca.lj矩形(0, 0, 256, 256) '新增矩形路径 ca.mh填充(true) '填充路径 ca.sc辐射渐变RGBA(&HFFFFFFFF, 115.2, 102.4, 25.6, &HFF000000, 102.4, 102.4, 128.0) '创建圆形渐变 ca.lj弧线(128.0, 128.0, 76.8, 76.8, 0, 360) '新增 圆形路径 ca.mh填充(true) '填充路径 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 图像 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.lj矩形 10, 10, 256, 256 ’矩形 ca.zb裁剪 True ‘裁剪 ca.zb旋转(138,138,45) '旋转 ca.ht绘PNG图像(App.Path & "i-0056_57.png",10,10,256,256) ’显示图像文件 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 贴图 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.zb旋转(138,138,45) '旋转45度 ca.lj矩形 80, 20, 200, 200 '矩形 ca.sc贴图PNG(App.Path & "i-0056_57.png",100,50,CAIRO_EXTEND_REPEAT,70,70) ‘图像在矩形里贴图 ca.mh填充(true) '填充 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 线帽 Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 Dim i As Long For i = 0 To 2 '新增3个线条 ca.lj设置绝对坐标 50.0, 75.0 + i * 50 ca.lj直线到绝对坐标 200.0, 75.0 + i * 50 ca.xk线帽样式 = i ca.xk线框粗细 = 30 '线粗 ca.sc单色RGB 0 '颜色 ca.mh描线(True) '描边 ca.lj设置绝对坐标 50.0, 75.0 + i * 50 ca.lj直线到绝对坐标 200.0, 75.0 + i * 50 ca.xk线帽样式 = i ca.xk线框粗细 = 2 '线粗 ca.sc单色RGB &H1A1AFF ca.mh描线(True) '描边 Next Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 折线处形状(角的形状) Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim ca As Cairo = cairo(hWndControl, 1) ca.ht清空画板(&HCCFFFF) '用一个颜色清空画板 ca.xk线框粗细 = 40 '线粗 ca.sc单色RGB 0 '颜色 For i As Long = 0 To 2 '新增3个线条 ca.lj设置绝对坐标 76.8, 84.48 + i * 80 ca.lj直线到相对坐标 51.2, -51.2 ca.lj直线到相对坐标 51.2, 51.2 ca.xk折线形状 = i ca.mh描线(True) '描边 Next Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 在WIN系统中,本质上是对GDI+的封装,绘画速度和GDI+相当。 好处是在非WIn系统中,也可以使用。
      • 2026年-1月-21日
      • 92 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic第三方代码库 2026-1-21
      VisualFreeBasic第三方代码库 各种代码库,第三方库等等,获取“库”的渠道,可能是什么地方下载来的。 官方渠道是,进 VFB QQ编程群,群文件里下载。VFB编程群的群号看本教程首页。 安装第三方库 库的来源:网上找到或别人给你的。一般在 VFB编程群里下载 下载文件后,解压文件到,VFB软件文件夹中的 Private 子文件里 最后在 VFB中,刷新代码库 刷新以后,在我的代码库中,就会显示 每个库都有自己的使用方式,假如库有专门的使用说明,可以点帮助区,打开查看
      • 2026年-1月-21日
      • 122 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic内置库_超大数值类型 2026-1-21
      VisualFreeBasic内置库_超大数值类型 BigFloat 大浮点数 超大浮点数的数据类型。以二进制方式储存数据。 DecFloat 大浮点数 超大浮点数的数据类型。以十进制方式储存数据。 说明 这是扩展数字类型,提供超大数计算。 这是超大数值类型,可以指定储存位数。 有 DecFloat 和 BigFloat 两种,来自开源代码:https://github.com/srvaldez/FreeBASIC-Projects 两种功能相同,一个软件不可以同时使用这两种类型,只可以选择一种,不然就发生扩展库冲突。 两种的储存方式不同,应用场景不同,根据自己软件需要使用。 一般我们用 DecFloat ,更适合普通人使用和显示输出, 使用方法 BigFloat 大浮点数 Const NUMBER_OF_DIGITS = 128 '必须放在引用库之前,设置最大储存位数,默认128位,删除此行就是128位。位数越多,占用内存越多,计算数值时占CPU和耗时越大 #include Once "inc\BigFloat.bi" Dim pi As Bigfloat = "3.1415926535897932384626433832795" '超大数值赋值,只能用字符,当然也支持普通数字赋值。 Dim bignum As Bigfloat = pi / 180 *30 Dim bigcos As Bigfloat = Cos(bignum) +1000 Print bigcos.toString Print bigcos.toString(32) Print bigcos.toLong Print bigcos.toDouble DecFloat 大浮点数 Const NUMBER_OF_DIGITS = 128 '必须放在引用库之前,设置最大储存位数,默认128位,删除此行就是128位。位数越多,占用内存越多,计算数值时占CPU和耗时越大 #Include Once "inc\DecFloat.bi" Dim pi As decfloat = "3.1415926535897932384626433832795" '超大数值赋值,只能用字符,当然也支持普通数字赋值。 Dim bignum As decfloat = pi / 180 *30 Dim bigcos As decfloat = Cos(bignum) +1000 Print bigcos.toString Print bigcos.toString_exp Print bigcos.toString_fix Print bigcos.toLong Print bigcos.toDouble Print bigcos.toLongint 计算出 π , 你可以设定计算出多少位,比方 1万位等,不过计算太多,会很慢,输出显示也是个问题。 DecFloat #Include Once "inc\DecFloat.bi" '2种大数都可以 Dim pi As decfloat pi.dec_num = pi_brent_salamin(位数) Print pi.toString 计算自然数 e Dim e As decfloat = 1, j As decfloat = 1 Dim i As Long For i = 1 To 300 ’计算位数 j *= i e += 1 / j Next
      • 2026年-1月-21日
      • 72 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic内置库_Win系统相关函数 2026-1-21
      VisualFreeBasic内置库_Win系统相关函数 这里提供了大量的函数,这里就不列举说明了。 大多可以直接使用,少部分,需要引用库文件。 每个函数帮助后面,指示需要引用什么库,当使用这个函数提示未定义,就引用一下库文件即可使用。 打开VFB帮助,有对每一个函数的功能和用法都详细说明
      • 2026年-1月-21日
      • 66 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic内置库_CDec 128位十进制数 2026-1-21
      VisualFreeBasic内置库_CDec 128位十进制数 十进制数据类型的包装类。支持有符号的128位 (16 字节) 值 引用文件 #include Once "Afx/CDec.inc" DIM dec AS CDEC = 12345.12 print dec ' = 12345,12 print "scale: ", dec.m_dec.scale ' --> scale = 2 dec += dec + 11.1111 print dec ' = 24701,3511 print "new scale: ", dec.m_dec.scale ' --> scale = 4
      • 2026年-1月-21日
      • 36 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic内置库_CCur 货币数值 2026-1-21
      VisualFreeBasic内置库_CCur 货币数值 CCUR 是Currency数据类型的包装类。货币是以8字节的两个补码整数值除以10000为比例实现的。这给出了一个 精确的固定小数点的数字, 小数点左边有15位, 右边有4位数字。货币数据类型对于涉及货币的计算非常有用, 或者对于任何需要精确的固定小数点计算而言, 精确度很重要。 CCUR 包装实现此 fixed-point 类型的算术、赋值和比较运算, 并提供对小数点两侧的数字的访问, 其形式为两个部分: 一个整数部分, 它将值存储在小数点, 以及将值存储在小数点右边的小数部分。小数部分在内部存储为-9999 (CY_MIN_FRACTION) 和 +9999 (CY_MAX_FRACTION) 之间的整数值。函数 GetFraction 返回一个按 10000 (CY_SCALE) 因子缩放的值。\ 在指定 CCUR 对象的整数和小数部分时, 请记住小数部分是范围0到9999的数字。在处理美元、人民币这样的货币时, 这一点很重要, 即在小数点后仅使用两个有效位表示金额。即使最后两位数字不显示, 也必须考虑到它们。 使用方法 先引用库文件 #include Once "Afx/CCur.inc" DIM c AS CCUR = 12345.1234 print c c = c + 111.11 print c c = c - 111.11 print c c = c * 2 print c c = c / 2 print c c += 123 print c c -= 123 print c c *= 2.3 print c c /= 2.3 print c c = c ^ 2 print c c = SQR(c) print c DIM c2 AS CCUR = c print c2 DIM c3 AS CCUR = c * 2 print c3 DIM c4 AS CCUR = c3 / 2 print c4 DIM c5 AS CCUR = "1234.789" print c5 DIM c6 AS CCUR c6 = "77777.999" print c6 DIM c7 AS CCUR c7 = c6 print c7 DIM cl AS CCUR = 3 cl = LOG(cl) print cl DIM v AS VARIANT = cl dim cv AS CCUR = v print cv print "--------------" DIM cx AS CCUR FOR i AS LONG = 1 TO 1000000 cx += 0.0001 NEXT PRINT "0.0001 added 1,000,000 times = "; cx
      • 2026年-1月-21日
      • 41 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • 8
    • 9
    • 10
    • 11
    • 12
    博主栏壁纸
    博主头像 勇芳

    330 文章数
    0 评论量
    • QQ游戏大厅多开版_旧版_2012到2025版
    • 使用Sandboxie沙盒多开QQ游戏大厅
    • Sandboxie沙盒(隔离软件)
    人生倒计时
    最新评论
    链接
    • 公益·寻亲,让爱回家
    • Visual Basic6 语言和控件手册
    • CWindow类库帮助FreeBasic版
    • FreeBASIC 帮助文档中文版
    • Windows GDI 编程手册
    • Windows GDI+ 编程手册
    • SQLite3数据库API手册
    • WebBrowser控件编程手册
    • Win32API参考手册
    • Windows 编程宝典
    • WinHttp参考资料
    • WMI编程手册
    • VisualFreeBasic编程文档
    舔狗日记
    载入天数...载入时分秒...

    © 2025 勇芳软件工作室 版权所有

    ICP备案图标 浙ICP备11006222号-1 | 公安备案图标 33100402331731号

    powered by emlog 浙ICP备11006222号-1