双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

VB 点阵字模设计的问题

ZRJ8703 ZRJ8703 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我参考论坛的一位朋友给的程序,写了一下自己的点阵字模程序。现在有一个问题是 我只改变 picture的前景色,得到的字模是不同的。这个为什么很前景色有关系呢?不是只要打印的位置相同,字号相同 得到不应该是一样的么?


程序如下

Option Explicit

Private Sub Command1_Click()
Dim X As Integer, Y As Integer, B As Double, C As Integer, M As Integer
If IsNumeric(TxtK.Text) = False Then Exit Sub
If IsNumeric(TxtG.Text) = False Then Exit Sub
Picture1.Width = Picture1.ScaleX(CInt(TxtK.Text), vbPixels, Picture1.ScaleMode) '定义 宽
Picture1.Height = Picture1.ScaleY(CInt(TxtG.Text), vbPixels, Picture1.ScaleMode) '定义 高
Picture1.BackColor = vbGreen
Picture1.Cls

Picture1.CurrentX = (Picture1.Width - Picture1.TextWidth(TxtC.Text)) / 2
Picture1.CurrentY = (Picture1.Height - Picture1.TextHeight(TxtC.Text)) / 2

Picture1.Print TxtC.Text
C = 0
B = 0
TxtR.Text = ""

'从左到右(X) 从下到上(Y)纵向取点
For X = 0 To CInt(TxtK.Text) - 1 '从左到右

For Y = CInt(TxtG.Text) - 1 To 0 Step -1 '从下到上

'每点,取色,对比
If Picture1.Point(Picture1.ScaleX(X, vbPixels, Picture1.ScaleMode), Picture1.ScaleY(Y, vbPixels, Picture1.ScaleMode)) = Picture1.BackColor Then
B = B Or 1 '为背景色,置位 低电平点亮LED(根据硬件设计)
End If

C = C + 1 '累计取点数量

If C = 16 Then '集满两个字节(16位),显示
M = M + 1
If B = 0 Then
If M = 16 Then
TxtR.Text = TxtR.Text & "0x0000"
C = 0
B = 0
Else
TxtR.Text = TxtR.Text & "0x0000" & ","
C = 0
B = 0
End If
End If

If B < 16 And B <> 0 Then
If M = 16 Then
TxtR.Text = TxtR.Text & "0x000" & Hex(B)
C = 0
B = 0
Else
TxtR.Text = TxtR.Text & "0x000" & Hex(B) & ","
C = 0
B = 0
End If
End If

If B < 256 And B >= 16 Then
If M = 16 Then
TxtR.Text = TxtR.Text & "0x00" & Hex(B)
C = 0
B = 0
Else
TxtR.Text = TxtR.Text & "0x00" & Hex(B) & ","
C = 0
B = 0
End If
End If

If B < 4096 And B >= 256 Then
If M = 16 Then
TxtR.Text = TxtR.Text & "0x0" & Hex(B)
C = 0
B = 0
Else
TxtR.Text = TxtR.Text & "0x0" & Hex(B) & ","
C = 0
B = 0
End If
End If


If B <= 65535 And B >= 4096 Then
If M = 16 Then
TxtR.Text = TxtR.Text & "0x" & Hex(B)
C = 0
B = 0
Else
TxtR.Text = TxtR.Text & "0x" & Hex(B) & ","
C = 0
B = 0
End If
End If



Else '不满两个字节(16位),进位
B = B * 2
End If

Next
Next
End Sub

Private Sub Form_Load()
TxtK.Text = "16"
TxtG.Text = "16"
End Sub



下边是 汉 的字模

汉

0xF7CF,0x838E,0x8198,0x7839,0x3F0B,0xBFE5,0x9FFD,0xCF81,0xE40D,0xF07D,0xF07D,0xE41D,0xCF01,0x9FE1,0x9FFD,0xBFFF 红色


0xF7CF,0x838E,0x8198,0x7C39,0x3F8F,0xBFF5,0x9FFD,0xCF81,0xE41D,0xF0FD,0xF07D,0xE61D,0xCF81,0x9FF1,0x9FFD,0xBFFF 黑色

可以看到两种不同的字模

...全文

相关推荐

vb字模简析

例如,范志敏、刘洁莉、补家武的论文讨论了基于VB实现的汉字点阵字模的提取方法;王春武、刘春玲、姜文龙的期刊论文介绍了基于VB6.0的点阵字模信息提取方法;沈晶的文章则关注了汉字字模在LED显示系统中的应用

去瞧瞧好么

高效汉字字模提取工具软件实战应用

当无法找到某字时,可动态生成占位符。例如,“□”的标准GB2312编码为0xA1AA,其字模数据已知,可硬编码备用:此图案外框实心,内部空心,形似“□”。也可生成“?”或其他提示符号,增强可读性。异常类型检测方法处理措施非GB2312字符检查字节范围替换为“□”编码转换失败iconv返回-1记录日志,跳过HZK16文件损坏fread读取不足32字节抛出异常,提示重新下载内存分配失败malloc返回NULL。

夏勇兴

嵌入式汉字字模提取:GBK点阵字库索引算法与工具实战

在嵌入式系统开发中,汉字显示与打印是常见需求。GBK编码作为中文信息处理的基础,其点阵字库(如HZK16、HZK24)因索引高效而被广泛采用。本文从字模基本原理出发,推导基于GBK内码的偏移量计算公式,并详解16×16与24×24字模的生成与验证工具。针对半角字符、字节序、生僻字等工程陷阱,提供实用排查方法。无论是工业仪表屏幕显示还是热敏打印输出,掌握该技术可有效提升汉字渲染效率与稳定性。

长发在船头舞蹈

LED点阵屏汉字显示:上位机串口发送与字模转换全攻略

LED点阵屏的显示本质上是将汉字映射为像素点阵:每个汉字由固定行列的LED亮灭组合呈现。传统开发中,每次更改显示内容都需重新取模、编译和烧录固件,效率低下。通过上位机设计,利用PC强大的字库与渲染能力,将文本动态转换为点阵字模,再经串口通信下发至单片机,即可实现实时显示任意汉字。这一方案不仅简化了嵌入式端的存储与逻辑,还大幅提升内容更新灵活性,广泛应用于门店招牌、信息发布屏、课程设计及竞赛作品。掌握汉字编码、点阵取模方向、通信协议等核心知识,是搭建高效LED点阵显示系统的关键,也是从入门到进阶的必经之路。

浩浩耗

汉字取字模软件源VB源码

总的来说,这个"16×16汉字取字模软件源VB源码"项目涵盖了字符编码、图形处理和用户界面设计等多个方面的知识点,对于提升VB编程技能和对汉字显示原理的理解具有很高的价值。

lj2100
评论 1
收藏 已收藏
分享
返回顶部
ZRJ8703
VB基础类 7,788 成员 197,583 内容