论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
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日
66 阅读
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日
80 阅读
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日
77 阅读
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日
112 阅读
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日
207 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_APP
这是内置变量,当前程序的相关内容,如EXE文件、路径、版本等等。 你虽然可以重新赋值更改它,但不建议这么做 在自己代码中直接使用 print App.成员 成员 说明 Comments As Wstring * 100 注释 CompanyName As Wstring * 100 公司名 EXEName As Wstring * 100 程序的EXE名称 FileDescription As Wstring * 100 文件描述 hInstance As HINSTANCE 程序的实例句柄 Path As Wstring * 100 EXE的当前路径 ProductName As Wstring * 100 产品名称 LegalCopyright As Wstring * 100 版权所有 LegalTrademarks As Wstring * 100 商标 ProductMajor As Long 产品主要编号 ProductMinor As Long 产品次要编号 ProductRevision As Long 产品修订号 ProductBuild As Long 产品内部编号 FileMajor As Long 文件主要编号 FileMinor As Long 文件次要编号 FileRevision As Long 文件修订号 FileBuild As Long 文件内部编号 ReturnValue As Integer 返回的用户值
2026年-1月-20日
129 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_内置函数和类型
已经内置在 VisualFreeBasic 在中的函数或类,写代码,可以直接调用。 一般都是提供给VFB内核使用的,当然我们也可以调用它 函数或类型 说明 yGDI 类 GDI 封装类,方便画图 vfb_Remove_Control_Ptr 删除数据指针 vfb_Set_Control_Ptr 设置控件数据指针 FLY_VFB_Layout_Handle FLY_VFB_Layout_hWndForm 处理控件布局 vfb_Get_Control_Ptr 获取控件数据指针 FF_AddTooltip 工具提示 FLY_DoMessagePump 消息循环函数 FLY_ResourceToIcon 资源获取图标句柄 GetCodeColorGDI 把控件特殊颜色值,转换为 GDI 色 ,返回-1 为不使用或默认 GetCodeColorGDIplue 把控件特殊颜色值,转换为 GDI+ 色 ,返回0 为不使用或默认 gFLY_GetFontHandles 由字体字符,返回字体句柄 FormControlsPro_TYPE 保存控件的私有属性,每个控件都不同,全部在此,各取所需。 APP_TYPE 程序员可以通过共享APP变量访问的公共信息。 App 当前程序的相关内容,如EXE文件、路径、版本等等。 vfb_Control_Ptr_Save 控件数据指针保存处 以上内容是VFB核心内容,不可以随意更改。
2026年-1月-20日
224 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_代码安全
我们编写代码过程中,很难避免意外情况,造成代码丢失,比方:突然停电、VFB崩溃、硬盘损坏,误修改保存 等等,因此VFB也做出了一系列的安全措施。 1,恢复状态 关闭VFB后重新开启VFB,恢复原来打开的工程和文件。 这是预防意外关闭VFB,和正常关闭VFB后,可以恢复到原先的状态,方便继续开发软件。 注:此功能,在选项中可以,属于可选功能,默认开启 2,自动保存 每次修改代码或工程相关的,20秒后会自动保存文件和工程 这是预防突然停电、VFB崩溃等意外 注:此功能,在选项中可以,属于可选功能,默认开启 3,工程备份 每次打开一个工程,就先备份这个工程到其它文件夹。 狡兔三窟,可以设置最多三个文件夹来备份,默认备份到 C 盘,需要自己设置 这是预防硬盘损坏、中病毒、误删除等等。 注:此功能,在选项中可以,属于可选功能,默认开启 4,代码自动备份 每次修改代码后,备份一个新文件到备份文件夹中,超过1天,每天保留1份,超过1月,每月保留1份。 这是预防误修改,可以去找回原来的代码 注:此功能,在选项中可以,属于可选功能,默认开启 5,打开工程备份和文件备份 为了方便随时可以打开来查看备份,在主页中,随时来打开工程或文件
2026年-1月-20日
145 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_基本操作
双击代码库可插入到代码区 双击标签切换代码和设计 点击加号可切换和新增 可以把标签拖出独立窗口 工具和工作区可以左右、上下调节 底部工具区也可以拖出独立窗口 标签右键菜单 点击代码,底部显示详细说明 属性名双击切换中英文 属性选择列表双击可以切换 刷新和名称都可以左右调节
2026年-1月-20日
200 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic指南_基本流程
一、新建工程 选择EXE工程 输入自己软件的名称 创建完成的样子 二、拖放控件 控件区选择一个控件 摆上控件 三、编写事件代码 双击控件 编写代码 四、生产软件(编译) 点编译执行 已经运行的软件 五、软件文件 打开工程文件夹 软件输出文件夹 软件文件
2026年-1月-20日
215 阅读
0 评论
VisualFreeBasic编程文档
30
31
32
33