论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
包含标签 【编程】 的文章
2026-1-20
VisualFreeBasic指南_控件
编程中的“控件”(Controls)是图形用户界面(GUI)编程中的一个基本概念,它们代表用户可以在屏幕上看到并与之交互的元素。控件可以是按钮、文本框、标签、复选框、单选按钮、下拉列表、滑块、图片框等。不同的编程语言和框架提供了不同的控件集和创建控件的方法。下面我将以一个较为通用的方式介绍控件的基本概念和使用方法,并以几个流行的编程环境为例进行说明。 控件的基本概念 创建控件:在GUI编程中,首先需要创建控件实例。点控件图标一下,然后到窗口点一下即可完成创建 设置属性:控件有许多属性,如大小、位置、颜色、文本等,这些属性可以通过编程来设置。 事件处理:控件可以响应用户的操作,如点击、键盘输入等。这些操作会触发事件,程序员可以编写事件处理程序来响应这些事件。 控件修改 控件有什么问题,自己还可以修改
2026年-1月-20日
116 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_扩展功能
扩展代码,我的代码库 自己把需要的代码片段函数,分类保存,写软件时,无需任何操作,直接调用函数即可 可以在新建工程里,创建新的函数 修改代码,也非常简单,在写代码中,在函数名上 右键菜单,即可打开这个库文件编辑 删除和修改分类,就用WIn系统的文件管理器打开操作即可 扩展控件,VFB控件 VFB的控件都带有源码,可以打开控件工程,随意修改 也可以新建工程时,新建一个控件 扩展功能,VFB插件 插件,可以使软件功能按照自己的需求定制,在选项中可以配置插件 插件,大多数官方带的,都包含源码,修改源码,编译后重启VFB就生效
2026年-1月-20日
112 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI_其它
正在补货
2026年-1月-20日
71 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI+_画图
操作形式和 GDI 一样 GDI+ 唯一好处就是 有 去锯齿 功能,画的东西比较好看。但速度比 GDI慢。
2026年-1月-20日
63 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI+_文字
实现更多的画文字功能
2026年-1月-20日
84 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI+_位图
操作形式和 GDI 一样 唯一好处是画 PNG 图像可以支持PNG的透明层。 成员列表 Function GpLoadImgFile(FileName As CWSTR) As HANDLE '加载文件图像到 nGpimage ,便于后面重复使用,成功返回图像句柄,失败返回0(再次加载将销毁前面加载的句柄)。 Function GpLoadImgRes(hInst As HINSTANCE, ResName As CWSTR) As HANDLE '加载资源图像到 nGpimage ,便于后面重复使用,成功返回图像句柄,失败返回0(再次加载将销毁前面加载的句柄)。 Function GpLoadImgBuffer(Buffer As Any Ptr, BufferSize As ULong) As HANDLE '从内存中图像到 nGpimage ,成功返回图像句柄,失败返回0(再次加载将销毁前面加载的句柄)。 Sub GpDrawCopyImg(xDest As Single, yDest As Single, wDest As Single, hDest As Single, xSrc As Single, ySrc As Single, wSrc As Single, hSrc As Single) '描绘由LoadImg加载来的图,主要用来像画工具栏里的小按钮 GpLoadImgFile 加载文件图像 先加载图像,然后用画图属性画图像,假如先前有加载的图像,同时只能存在一个图像,将会替换原来的图像。 FileName 文件名 GpLoadImgRes 加载资源图像 先加载图像,然后用画图属性画图像,假如先前有加载的图像,同时只能存在一个图像,将会替换原来的图像。 hInst 模块 ResName 资源名
2026年-1月-20日
67 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI_画图
画图,就是画线、框、圆等 基本步够, 先设置笔,用来画线条,或框和圆的边线。 \ 例:gg.Pen 线宽度,颜色值 设置刷子,用来填充框和圆的内部,线条无效。 \ 例:gg.Brush 颜色值 使用画框画圆等作画 \ 依照笔和刷子来画画 设置笔和刷永久有效,若不改变,无需重复设置。默认为 1线条黑色,无填充。 注意: 下面所有用到的坐标和尺寸,都是像素单位,自动响应DPI 响应DPI:数值都按照 100%DPI时设置,代码会根据系统中的DPI自动换算,让我们的软件可以在任何电脑中不同 DPI下都看上去一样。 成员列表 Sub Pen(ByVal cWidth As Long, ByVal crColor As Long, ByVal iStyle As Long = PS_SOLID) '设置笔,画框线用 {3.PS_NULL 无线.PS_SOLID 实线.PS_DASH 虚线.PS_DOT 点线.PS_DASHDOT 点划线.PS_DASHDOTDOT 点-点划线.PS_INSIDEFRAME 由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框时,画线宽度向内扩展。如指定的准确RGB颜色不存在,就进行抖动处理} Sub Brush(ByVal crColor As Long = -1) '设置刷子,用于填充颜色 -1为空刷子 Sub BrushHatch(fnStyle As Long, crColor As Long = 0) '设置 样式 刷子,用于填充 {1.HS_BDIAGONAL 从右到左45度 斜纹.HS_CROSS 十字线.HS_DIAGCROSS 45度十字线.HS_FDIAGONAL 从左到右45度 斜纹.HS_HORIZONTAL 水平纹.HS_VERTICAL 垂直纹} Sub DrawLine(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) '画线条,位置1到位置2 Sub DrawArc(ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long, ByVal StartAngle As Single, ByVal EndAngle As Single) '画圆弧,x y w h 一个假想的圆,位置和宽度高度 , StartAngle 相对于x轴的起始角度(以度为单位)。0度为原的右边中部 , EndAngle 顺时针转了多少角度 Sub DrawFrame(ByVal X As Long, ByVal Y As Long, ByVal W As Long = 0, ByVal H As Long = 0) '画框 位置和宽度高度 Sub DrawCircleFrame(ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long, ByVal wC As Long, ByVal hC As Long) '描绘一个圆角矩形,位置和宽度高度、宽圆和高度圆 Sub DrawEllipse(ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long) '描绘一个椭圆,位置和宽度高度 Sub DrawPolygon(POINTS() As Point) '描绘多边形 顶点数必须大于或等于2。 Pen 笔,框线 (ByVal cWidth As Long, ByVal crColor As Long, ByVal iStyle As Long = PS_SOLID) 设置笔的大小和颜色,用于画框线用 cWidth 宽度,单位像素(自动相应 DPI,设置为 100%DPI时的数值) crColor 颜色,RGB颜色,GDI颜色值,用 BGR(r,g,b) 获取 iStyle 线条样式,默认 PS_DASH PS_NULL 无线 PS_SOLID 实线 PS_DASH 虚线 PS_DOT 点线 PS_DASHDOT 点划线 PS_DASHDOTDOT 点-点划线 PS_INSIDEFRAME 由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框时,画线宽度向内扩展。如指定的准确RGB颜色不存在,就进行抖动处理 Brush 刷子,填充 (ByVal crColor As Long = -1) 设置刷子,用于矩形、多边形、椭圆等填充颜色 crColor 颜色,RGB颜色,GDI颜色值,用 BGR(r,g,b) 获取,等于-1 不填充 BrushHatch 样式刷子 (fnStyle As Long, crColor As Long = 0) '设置 样式 刷子,用于填充 fnStyle 样式 HS_BDIAGONAL 从右到左45度 斜纹 HS_CROSS 十字线 HS_DIAGCROSS 45度十字线 HS_FDIAGONAL 从左到右45度 斜纹 HS_HORIZONTAL 水平纹 HS_VERTICAL 垂直纹 crColor 颜色,RGB颜色,GDI颜色值,用 BGR(r,g,b) 获取 DrawLine 描绘线条 (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) '画线条,位置1到位置2 x1,y1 开始位置 x2,y2 结束位置 DrawArc 描绘圆弧 (ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long, ByVal StartAngle As Single, ByVal EndAngle As Single) x,y,w,h 一个假想的圆,就是描绘这个椭圆上的某个线段 StartAngle 相对于x轴的起始角度(以度为单位)0度为原的右边中部 EndAngle 顺时针转了多少角度 DrawFrame 描绘矩形 (ByVal X As Long, ByVal Y As Long, ByVal W As Long = 0, ByVal H As Long = 0) x,y 矩形左上角位置 w,h 矩形大小,等于0 将会描绘画板的最大尺寸 DrawCircleFrame 描绘圆角矩形 (ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long, ByVal wC As Long, ByVal hC As Long) x,y,w,h 矩形左上角位置和尺寸 wC ,hC 圆角的大小,分宽度和高度圆 DrawEllipse 描绘椭圆 (ByVal X As Long, ByVal Y As Long, ByVal W As Long, ByVal H As Long) x,y,w,h 椭圆左上角位置和尺寸 DrawPolygon 描绘多边形 (POINTS() As Point) POINTS() 顶点数数组,必须大于或等于2。多边形每个顶点坐标,首尾会自动闭合。 Dim p(2) As Point '画个三角形 p(0).x = 10 : p(0).y = 0 p(1).x = 20 : p(1).y = 10 p(2).x = 0 : p(2).y = 10 gg.DrawPolygon(p())
2026年-1月-20日
81 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI_文字
就是画文字 一、设置字体:gg.Font 二、设置颜色:gg.SetColor 三、输出文字:gg.DrawString x,y,"xxxx" 设置字体和颜色永久有效,若不需要改变,无需重复设置。默认为 雅黑,9号,黑色字,无底色。 成员列表 Sub Font(fName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False, Italic As UByte = False, ByVal Underline As UByte = False, ByVal StrikeOut As UByte = False) '设置字体{3.True.False}{4.True.False}{5.True.False}{6.True.False} Sub SetColor(ByVal tColor As Long, ByVal bColor As Long = -1) '设置文本颜色,字色和字的背景色,背景值-1为透明背景。 Sub DrawString(ByVal X As Long, ByVal Y As Long, nText As CWSTR) '描绘制指定的文本字符串 Sub DrawStringFC(ByVal X As Long, ByVal Y As Long, nText As CWSTR, tColor As Long, nName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False) '描绘制指定的文本字符串,带字体和颜色 Function DrawTextS(X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0) As Long '指定的矩形中绘制格式化的文本,样式为组合,见VFB帮助。 Function DrawTextFC(X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0, tColor As Long, nName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False) As Long '指定的矩形中绘制格式化的文本,带字体和颜色,样式为组合,见VFB帮助。 Sub DrawFrameStr(ByVal X As Long, ByVal Y As Long, nText As CWSTR) '描绘描边字,轮廓字,轮廓先设置笔,字为正常字 Sub DrawFrameStrR(ByVal X As Long, ByVal Y As Long, nText As CWSTR, bColor As Long) '绕写方式的轮廓字 Sub DrawFrameText(X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0) '描绘描边字,轮廓字,轮廓先设置笔,字为正常字 Sub DrawFrameTextR(X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, bColor As Long, uFormat As ULong = 0) '绕写方式的轮廓字 Function GetTextWidth(nText As CWSTR) As Long '获取文本显示宽度,自动支持DPI感知,为 100% DPI 时的数字。假如 DPI比率=1 则是实际像素值 Function GetTextHeight(nText As CWSTR) As Long '获取文本显示高度,自动支持DPI感知,为 100% DPI 时的数字。假如 DPI比率=1 则是实际像素值 Sub FontEx(fName As CWSTR = "Microsoft YaHei", fSizeH As Long = 9,fSizeW As Long = 0, Angle As Single = 0, ByVal Bold As Long = FW_NORMAL, Italic As UByte = False, ByVal Underline As UByte = False, ByVal StrikeOut As UByte = False) '设置字体扩展,带宽度和旋转角度。{3.True.False}{4.True.False}{5.True.False}{6.True.False} Font 设置字体 (fName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False, Italic As UByte = False, ByVal Underline As UByte = False, ByVal StrikeOut As UByte = False) fName 字体名称,默认 "Microsoft YaHei" fSize 字体大小,默认 9 (相应 DPI ) Bold 是否加粗,默认 False Italic 是否斜体,默认 False Underline 是否下划线,默认 False StrikeOut 是否删除线,默认 False FontEx 设置字体 (fName As CWSTR = "Microsoft YaHei", fSizeH As Long = 9,fSizeW As Long = 0, Angle As Single = 0, ByVal Bold As Long = FW_NORMAL, Italic As UByte = False, ByVal Underline As UByte = False, ByVal StrikeOut As UByte = False) 设置字体扩展,带宽度和旋转角度。 fName 字体名称,默认 "Microsoft YaHei" fSizeH 字体高度(字体大小、字号),默认 9 (相应 DPI ) fSizeW 字体宽度(字号),默认=0,表示跟随高度。 Bold 加粗多少,标准为 FW_NORMAL=400 ,数字越大越粗 Italic 是否斜体,默认 False Underline 是否下划线,默认 False StrikeOut 是否删除线,默认 False SetColor 文字颜色 (ByVal tColor As Long, ByVal bColor As Long = -1) tColor 文本颜色 bColor 背景值,默认-1为透明背景。 DrawString 描绘文本 (ByVal X As Long, ByVal Y As Long, nText As CWSTR) x,y 位置 nText 文本 DrawStringFC 直接设置字体和颜色描绘文本 直接指定字体和颜色,不改变公用设置来描绘文本 (ByVal X As Long, ByVal Y As Long, nText As CWSTR, tColor As Long, nName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False) x,y 位置 nText 文本 tColor 文本颜色 fName 字体名称,默认 "Microsoft YaHei" fSize 字体大小,默认 9 (相应 DPI ) Bold 是否加粗,默认 False DrawTextS 格式化描绘文本 (X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0) As Long 指定的矩形中绘制格式化的文本,样式为组合 x,y,w,h 位置和矩形尺寸 nText 文本 uFormat 格式化样式 返回 用了DT_CALCRECT后不描绘,返回文字高度(像素) 常用:DT_CENTER Or DT_VCENTER Or DT_SINGLELINE DT_BOTTOM 将文本对齐到矩形的底部。该值仅与DT_SINGLELINE值一起使用。 DT_LEFT 将文本对准左侧。(默认) DT_RIGHT 将文本对齐到右侧。 DT_TOP 将文本对齐到矩形的顶部。(默认) DT_CENTER 在矩形中居中文字。 DT_VCENTER 纵向中心文本。该值仅与DT\_SINGLELINE值一起使用。 DT_CALCRECT 返回格式化文本的高度,但不绘制文本。 DT_EDITCONTROL 复制多行编辑控件的文本显示特性。具体而言,以与编辑控件相同的方式计算平均字符宽度,并且该函数不显示部分可见的最后一行。 DT_END_ELLIPSIS 如果字符串的末尾不适合矩形,则会被截断,并添加省略号。 DT_HIDEPREFIX 忽略文本中的&符号(&)前缀字符。 DT_NOPREFIX 关闭前缀字符的处理。 DT_INTERNAL 使用系统字体来计算文本度量。 DT_MODIFYSTRING 修改指定的字符串以匹配显示的文本。 DT_PATH\_ELLIPSIS 对于显示的文本,用椭圆替换字符串中间的字符,以使结果符合指定的矩形。 DT_RTLREADING 右向左阅读顺序布局 DT_SINGLELINE 仅在一行上显示文字。 DT_TABSTOP 设置制表位。 DT_WORDBREAK 自动换行 DT_WORD_ELLIPSIS 截断任何不适合矩形的单词并添加省略号。 DrawTextFC 指定字体和颜色格式化描绘文本 (X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0, tColor As Long, nName As CWSTR = "Microsoft YaHei", ByVal fSize As Long = 9, ByVal Bold As UByte = False) As Long x,y,w,h 位置和矩形尺寸 nText 文本 uFormat 格式化样式,见 DrawTextS 说明 tColor 文本颜色 fName 字体名称,默认 "Microsoft YaHei" fSize 字体大小,默认 9 (相应 DPI ) Bold 是否加粗,默认 False DrawFrameStr 描绘带轮廓文本 (ByVal X As Long, ByVal Y As Long, nText As CWSTR) 描绘描边字,轮廓字,轮廓先用画图里的笔设置好宽度和颜色,字为正常字 x,y 位置和矩形尺寸 nText 文本 DrawFrameStrR 绕写描绘轮廓文本 (ByVal X As Long, ByVal Y As Long, nText As CWSTR, bColor As Long) 使用绕写方式的描绘轮廓字 x,y 位置和矩形尺寸 nText 文本 bColor 轮廓颜色 DrawFrameText 格式化描绘轮廓文本 (X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, uFormat As ULong = 0) '描绘描边字,轮廓字,轮廓先用画图里的笔设置好宽度和颜色,字为正常字 x,y,w,h 位置和矩形尺寸 nText 文本 uFormat 格式化样式,见 DrawTextS 说明 DrawFrameTextR 格式化描绘绕写轮廓文本 (X As Long, Y As Long, W As Long, H As Long, nText As CWSTR, bColor As Long, uFormat As ULong = 0) x,y,w,h 位置和矩形尺寸 nText 文本 bColor 轮廓颜色 uFormat 格式化样式,见 DrawTextS 说明 GetTextWidth 获取文本显示宽度 (nText As CWSTR) As Long 获取文本显示宽度,自动支持DPI感知,为 100% DPI 时的数字。假如 DPI比率=1 则是实际像素值 GetTextHeight 获取文本显示高度 (nText As CWSTR) As Long 获取文本显示高度,自动支持DPI感知,为 100% DPI 时的数字。假如 DPI比率=1 则是实际像素值
2026年-1月-20日
78 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI_位图
画图像,有2种方式 一、画图像文件 二、画资源里的图像 上面是整幅图像一起画,有时我们需要取图像里的部分再画。 一、加载图像:LoadImg 二、拷贝图像:DrawCopy 成员列表 Sub InvertPixels(X As Long, Y As Long, W As Long, H As Long) '将指定的矩形中像素颜色翻转 Function GetPixel(ByVal x As Long, ByVal y As Long) As Long '获取像素点颜色 Function SetPixel(ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long '设置像素点颜色 Sub DrawImgRes(hInst As HINSTANCE, ResName As CWSTR, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) '直接画资源里的图片或ICO,必须是格式为.png,.jpg,.gif,.tiff,.ani, .ico, .cur 的图 {8.True 转换成灰度.False}{7.0 调高亮度百分比.50 从1到99.99 最高99} Sub DrawImgFile(FileName As CWSTR, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) '直接画文件的图片 {7.True 转换成灰度.False}{6.0 调高亮度百分比.50 从1到99.99 最高99} Sub DrawImgBuffer(Buffer As Any Ptr, BufferSize As ULong, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) '直接内存中文件数据的图片 {7.True 转换成灰度.False}{6.0 调高亮度百分比.50 从1到99.99 最高99} Sub LoadImgFile(FileName As CWSTR, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) '加载文件图像到 m_bDc ,便于后面重复使用,再次加载将消耗前面加载的。 {3.True 转换成灰度.False}{2.0 调高亮度百分比.50 从1到99.99 最高99} Function LoadImgRes(hInst As HINSTANCE, ResName As CWSTR, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) As HANDLE '加载资源图像到 m_bDc ,便于后面重复使用,成功返回图像句柄,失败返回0(再次加载将消耗前面加载的句柄) {4.True 转换成灰度.False}{3.0 调高亮度百分比.50 从1到99.99 最高99} Sub LoadBmpRes(hInst As HINSTANCE, ResName As CWSTR, dimPercent As Long = 0, bGrayScale As Long = False) '加载资源中BMP图像到 m_bDc ,便于后面重复使用,再次加载将消耗前面加载的。 {4.True 转换成灰度.False}{3.0 调高亮度百分比.50 从1到99.99 最高99} Sub DrawCopyImg(xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, rop As DWORD = SRCCOPY) '描绘由LoadImg加载来的图,主要用来像画工具栏里的小按钮{9.SRCAND AND合并(光栅操作代码).SRCCOPY 直接拷贝.SRCERASE 目标取反合并.SRCINVERT Xor合并.SRCPAINT Or合并.WHITENESS 调色板1索引.BLACKNESS 调色板0索引.DSTINVERT 目标取反.MERGECOPY And源模式组合.MERGEPAINT Or反向源.NOTSRCCOPY 源取反拷贝 .NOTSRCERASE Or组合源,合成后取反.PATCOPY 模式拷贝.PATPAINT Or源取反与模式并.PATINVERT Xor源合并} Sub DrawCopyImgAlpha(xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, TeMeDu As Long) '半透明 描绘由LoadImg加载来的图,TeMeDu为透明度 Sub DrawCopyImgColor(xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, tColor As Long) '扣色 描绘由LoadImg加载来的图 Sub LoadImgBuffer(Buffer As Any Ptr, BufferSize As ULong, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) '从内存中文件数据加载图片到像到 m_bDc ,便于后面重复使用,再次加载将销毁前面加载的。 {4.True 转换成灰度.False}{3.0 调高亮度百分比.50 从1到99.99 最高99} InvertPixels 颜色翻转 (X As Long, Y As Long, W As Long, H As Long) 将指定的矩形中像素颜色翻转 GetPixel 获取像素点 (ByVal x As Long, ByVal y As Long) As Long 获取像素点颜色,返回RGB颜色,是GDI的颜色 SetPixel 设置像素点 (ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long 设置像素点颜色,返回原来的颜色,是RGB颜色,是GDI的颜色 DrawImgRes 描绘资源图像 (hInst As HINSTANCE, ResName As CWSTR, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) 描绘资源里的图片或ICO,必须是格式为.png,.jpg,.gif,.tiff,.ani, .ico, .cur 的图 hInst 模块句柄,使用 app.hInstance 即可,也可以获取其它DLL的资源,输入DLL模块句柄 ResName 资源名称 x,y,w,h 描绘的位置和大小,单位是像素,w,h 为0时,描绘原尺寸大小 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False DrawImgFile 描绘文件图像 (FileName As CWSTR, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) 描绘图片文件 FileName 文件名,带路径 x,y,w,h 描绘的位置和大小,单位是像素,w,h 为0时,描绘原尺寸大小 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False DrawImgBuffer 描绘缓存区图像 (Buffer As Any Ptr, BufferSize As ULong, X As Long, Y As Long, W As Long = 0, H As Long = 0, dimPercent As Long = 0, bGrayScale As Long = False) 描绘缓存区里的图片数据,也可以称为描绘内存中的图片 Buffer 缓存区指针(内存地址) BufferSize 长度 x,y,w,h 描绘的位置和大小,单位是像素,w,h 为0时,描绘原尺寸大小 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False LoadImgFile 预加载图像文件 (FileName As CWSTR, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) 预加载图像文件,用于后面重复使用和特殊使用(DC是 yGDI.m_bDc ) FileName 文件名,带路径 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False clrBackground 背景色,假如图像有透明颜色,将会被背景色填充 LoadImgRes 预加载资源图像 (hInst As HINSTANCE, ResName As CWSTR, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) As HANDLE 预加载资源图像,用于后面重复使用和特殊使用(DC是 yGDI.m_bDc ) hInst 模块句柄,使用 app.hInstance 即可,也可以获取其它DLL的资源,输入DLL模块句柄 ResName 资源名称 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False clrBackground 背景色,假如图像有透明颜色,将会被背景色填充 成功返回图像句柄,失败返回0 LoadImgBuffer预加载缓存区图像 (Buffer As Any Ptr, BufferSize As ULong, dimPercent As Long = 0, bGrayScale As Long = False, clrBackground As Long = 0) 预加载缓存区里的图片数据,也可以称为描绘内存中的图片 Buffer 缓存区指针(内存地址) BufferSize 长度 dimPercent 调高亮度百分比 从1到99 最高99 bGrayScale 是否转换成灰度图像 =True =False clrBackground 背景色,假如图像有透明颜色,将会被背景色填充 DrawCopyImg 描绘预加载图像 (xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, rop As DWORD = SRCCOPY) 描绘预加载图像 xDest , yDest , wDest , hDest 目标位置和大小 xSrc , ySrc , wSrc, hSrc 原图像的位置和大小 rop 光栅操作代码,一般用:SRCCOPY SRCAND AND合并 SRCCOPY 直接拷贝 SRCERASE 目标取反合并. RCINVERT Xor合并 SRCPAINT Or合并 WHITENESS 调色板1索引 BLACKNESS 调色板0索引 DSTINVERT 目标取反 MERGECOPY And源模式组合 MERGEPAINT Or反向源 NOTSRCCOPY 源取反拷贝 NOTSRCERASE Or组合源,合成后取反 PATCOPY 模式拷贝 PATPAINT Or源取反与模式并 PATINVERT Xor源合并 DrawCopyImgAlpha 半透明描绘预加载图像 (xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, TeMeDu As Long) 半透明描绘预加载图像 xDest , yDest , wDest , hDest 目标位置和大小 xSrc , ySrc , wSrc, hSrc 原图像的位置和大小 TeMeDu 透明度 0--100 百分比 DrawCopyImgColor 扣色描绘预加载图像 (xDest As Long, yDest As Long, wDest As Long, hDest As Long, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long, tColor As Long) 扣色描绘预加载图像 xDest , yDest , wDest , hDest 目标位置和大小 xSrc , ySrc , wSrc, hSrc 原图像的位置和大小 tColor 扣除的颜色,图像中有这样的色彩就不会被描绘。
2026年-1月-20日
113 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic代码_yGDI
WIn系统提供的绘画就是 GDI ,是一切绘画的底层(当然还有 DX、OpenGL,那些更复杂的3D绘画,我门这里说的2D平面绘画),GDI 非常繁琐,功能非常多,为了方便使用,因此封装了一个 yGDI 的类提供给VFB里使用。 什么是GDI? GDI是 win操作系统里的2D绘画API,属于WIN里的内核函数,无论你用什么编程,反正到最后都是在个API,后来WIN系统又增加了一个增强版的 GDI ,我们称为 GDI+ ,GDI 和 GDI+ 是共存的,并不是二选一 什么是 yGDI? FreeBasic语言自带的画图语句,虽然可以跨平台,但不支持特定窗口画图,因此只能直接用 WIN系统的API 画图,此绘图API,微软称其为:GDI ,GDI 为2D 绘画API 后来又出了一批增强功能的GDI,称为GDI+,由于API 操作非常繁琐,因此 VisualFreeBasic5 引入了 yGDI 类,可以很简单的方法来操作 GDI 和 GDI+ 来绘画。 绘图分为 2D 和 3D ,2D主要是由CPU计算,3D主要由GPU计算(3D中也有平面2D绘画)\ 2D就是平面绘画,在WIn系统中无一例外,都使用GDI核心,yGDI 对其包装,极大的方便使用,可以在库文件里查看到所有源码,还可以修改。 必备基础或须知 (全WIN系统全语言通用GDI概念,学会后不管任何语言,只要是WIN系统都适用) 每个窗口和控件,其实是一个个画板,我们可以任意作画,具体在哪里画,WIN系统引入了设备句柄,代码类型为:hDC ,一般我们称为 DC ,某个窗口 DC用 GetDC 或 GetWindowDC 来获取。当然DC也可是打印机或其它设备,可以自己画其它设备上了。\ 要理解GDI是如何绘画的,我们可以先打开 WIN系统里的【画图】应用,就可以直观的明白,方法一样,所不同的是应用软件是用鼠标拖动画,我们用代码画。\ GDI 分为几个元素:笔、刷、字、图\ 笔:用来画线条的,可以设置颜色和宽度,GDI+ 还可以设置透明度、和笔帽等。\ 刷:用来填充某个区域,可以是颜色、形状、图片,GDI+ 还可以设置渐变、透明度等。\ 字:就是写字的呗,可以设置字体、大小、颜色,底色, GDI+ 有更多的文字特效。\ 图:就是图片、位图,可以把图贴到目标上,可以加各种特效,如透明等,GDI+ 支持更多图像文件。\ 绘图前要先设置好上面的元素,GDI和GDI+各自一套设置,是各自独立,为同一个画板绘画,\ 设置好笔和刷,用 画线、画矩形、画圆、画多边形 函数就画上内容了,写字函数写字,贴图函数贴图。 颜色值:32位数值,4个字节,GDI只用3个,GDI+用4个,第4个是透明度 A,=0全透明 =255不透明\ GDI 16进值:0BGR 内存中结构:RGB0 使用函数:BGR (r, g, b) \ GDI+ 16进值:ARGB 内存中结构:BGRA 使用函数:RGBA (r, g, b, a) 注意:无窗口和BAS工程需要添加引用,有窗口的工程会自动引用,不需要我们自己写代码引用。 #include Once "yGDI.inc" 准备工作 主动绘图模式 绑定DC Dim DC As HDC = GetDC(Picture1.hWnd) Dim gg As yGDI = DC '画画开始----------------------------- ...........一系列画画 '画画完成 ------------------------------- gg.Redraw ReleaseDC Picture1.hWnd, DC '销毁DC 绑定窗口句柄 Dim gg As yGDI = Picture1.hWnd '画画开始----------------------------- ...........一系列画画 '画画完成 -----------当函数结束, gg 变量被回收前会自动执行 gg.Redraw 被动绘图模式(刷新模式,必须在绘画事件里使用) Function Form1_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult Dim gg As yGDI = yGDI(hWndControl, GetSysColor(COLOR_WINDOW), True) gg.DrawEllipse 10,10,100,50 Function = TRUE ' 告诉系统,我们自绘了,不需要系统绘画。 End Function 坐标系和坐标单位 坐标原点(0, 0)位于绘图表面(窗口或控件)的左上角。x 轴正方向是从左向右,y 轴正方向是从上向下。 坐标单位为,像素。支持系统的 DPI ,确保在用户在任何系统中,都显示同比例的大小。 假如,系统的DPI是 125%,你画的 正方形,设置参数为 100像素,那么真实显示的是 125像素,不同系统的DPI,会自动缩放,我们编写软件,就按照 100像素编写即可。 特点: 1,自带绘图缓冲,全部画完结束后自动输出到屏幕,画画非常快。\ 2,同时初始化好 GDI 和GDI+,2者可以随意混合使用。\ 3,自动感知系统DPI,写代码时按 DPI 100% 设置 位置和大小即可,不需要考虑不同DPI的情况** 'GDI常用封装类,其它API 可以直接用 gg.m_Dc 调用API\ '为了加速GDI 画画速度,增加了 内存DC 用来缓存,不然画太多东西屏幕会闪,\ '调用中不需要知道内存DC,只是其它API操作,用 gg.m_Dc 内存DC来画 'WM_PAINT 消息里用 Dim gg As yGDI = yGDI(窗口句柄,GetSysColor(COLOR_WINDOW),True)\ '其它地方画画用 Dim gg As yGDI = 窗口句柄\ 'GDI分为:笔、刷、字体、位图、 辅助事件处理 =================================================== '注意:自绘状态下预防闪耀,要在 _CUSTOM 事件里加以下代码\ Select Case wMsg Case WM_ERASEBKGND **Return True '防止擦除背景,不加这个会闪的。** End Select 常用的常量 nPenStyle ------ Long,指定画笔样式,可以是下述常数之一\ PS_SOLID 画笔画出的是实线\ PS_DASH 画笔画出的是虚线(nWidth必须不大于1)\ PS_DOT 画笔画出的是点线(nWidth必须不大于1)\ PS_DASHDOT 画笔画出的是点划线(nWidth必须不大于1)\ PS_DASHDOTDOT 画笔画出的是点-点-划线(nWidth必须不大于1)\ PS_NULL 画笔不能画图\ PS_INSIDEFRAME 由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框时,画线宽度向内扩展。如指定的准确RGB颜色不存在,就进行抖动处理
2026年-1月-20日
208 阅读
0 评论
VisualFreeBasic编程文档
22
23
24
25