VB 点阵字模设计的问题

ZRJ8703 2017-01-20 09:17:23
我参考论坛的一位朋友给的程序,写了一下自己的点阵字模程序。现在有一个问题是 我只改变 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 黑色

可以看到两种不同的字模

...全文
266 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-01-23
  • 打赏
  • 举报
回复
因为你用的是“宋体”之类的矢量字体,边缘锯齿的平滑处理是和颜色有关的。你截图放大看就会发现差异。
如果是中文系统,可以用 FixedSys 字体,这是中文的点阵字体。

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧