Sep 8

1 VB点阵字库读取 搜索留存   不指定

felix021 @ 2007-9-8 01:37 [IT » 程序设计] 评论(0) , 引用(0) , 阅读(6252) | Via 本站原创 | |
1 VB点阵字库读取 搜索留存  
用HZK16对字型是有限制的。大家可以用一个比较简单的方法,就是先用label,在里面填入需要的汉字,然后把整个label中pixel按顺序读出来。
这样做可以让用户使用任意字型字号,而且显示效果非常好,这种方法我在我开发的一个HMI中使用过。  

  
作者: Felix021      封  2007-9-8 01:37   回复此发言   删除  

--------------------------------------------------------------------------------

2 回复:VB点阵字库读取 搜索留存  
http://topic.csdn.net/t/20060113/15/4515339.html

转成图片后读的一个例子:  
  
Option Explicit  
  
'运行本程序,需要在Form中放置以下控件:  
'名为Picutre1的PictureBox控件  
'名为Text1和Text2的TextBox控件  
'名为Command1的CommandButton控件  
  
Private Sub Command1_Click()  
Picture1.ScaleMode = vbPixels  
Picture1.Font.Name = "宋体"  
Picture1.Font.Size = 9  
Picture1.BackColor = vbWhite  
Picture1.Cls  
Picture1.Print Left(Text1.Text, 1)  
  
Dim X As Integer, Y As Integer  
Dim S As String  
  
'注:要设置Text2.MultiLine = True  
Text2.Text = ""  
For Y = 0 To 15  
S = ""  
For X = 0 To 15  
If Picture1.Point(X, Y) = 0 Then  
S = S & "*"  
Else  
S = S & " "  
End If  
Next X  
Text2.Text = Text2.Text & S & vbCrLf  
Next Y  
End Sub  
  
作者: Felix021      封  2007-9-8 01:38   回复此发言   删除  

--------------------------------------------------------------------------------

4 回复:VB点阵字库读取 搜索留存  
五、一个实际应用案例  

  图形点阵液晶在现代单片机系统中是一种十分常用的显示设备,BP机、手机上的显示屏就是图形点阵液晶。它能显示汉字和图形,与行列式键盘组成了单片机系统中最常用的人机交互界面。但是直接从中文系统汉字字库中提取的汉字字模并不能直接在液晶上显示,通常都必须经过格式上的调整和转换。  


  1、图形点阵液晶的汉字字模  

  与在西文DOS中显示汉字不同的是,图形点阵液晶并不是简单地用画点的方式来描出汉字。以常用的HD61202图形点阵液晶显示控制模块为例,它能控制64×64点阵液晶的显示,其显示RAM共64行,分8页,每页8行,每一页的数据寄存器分别对应液晶屏幕上的8行点,对显示RAM的一个字节单位赋值就是对当前列的8行(一页)的像素点是否显示进行控制。连续16列和相邻的2页的32字节显示RAM就可以控制一个汉字的显示区域。对这些显示RAM赋以相应的值就可以显示出一个汉字。  


  HD61202图形点阵液晶显示控制模块的汉字字模的排列实际上是标准汉字字模排列形式旋转而成的。对标准汉字字模转换的目的就是在单片机系统的数据存储器中(如E2PROM)存储经过调整的连续32字节的16进制数。  


  2、实际源程序  

  以下这段程序是放置在汉字源文本输入框(SrcTxt)的Change事件中。通过判断输入在文本框内的字符的ASCII码是否小于零,就能判断输入的字符是不是汉字。这段程序还能计算汉字字符串的长度。同时把输入的汉字存储在一个临时文件TempSrc.txt中。由于这段代码是放在文本框的Change事件中,它能立即更新汉字个数的显示。  


  Private Sub SrcTxt_Change( )  

  Static SStr As String  

  Dim i As Integer  

  Dim TempFile, TempFileBinary As String  

  TotalNum = 0  

  L = Len(SrcTxt.Text)  

  For i = 1 To L  

  tmpStr = StrConv(Mid$(SrcTxt.Text, i, 1), vbWide)  

  If Asc(Mid$(SrcTxt.Text, i, 1)) < 0 Then  

  TotalNum = TotalNum + 1  

  SStr = SrcTxt.Text  

  Else  

  MsgBox "写入的不是汉字!"  

  SrcTxt.Text = Left(SrcTxt.Text, Len(SrcTxt.Text) - 1)  

  Exit Sub  

  End If  

  Next i  

  LblNum.Caption = Str$(TotalNum) + "个汉字"  

  TempFile = App.Path + "\" + "TempSrc.txt"  

  'TempFileBinary = App.Path + "\" + "TempSrcBinary.txt"  

  Open TempFile For Output As #1  

  Print #1, SrcTxt.Text  

  Close #1  

  End Sub  

  在实例中选用了UCDOS 5.0汉字系统中的16点阵字库Hzk16作为提取汉字字模的标准字库。  

  Private Sub CmdCnt_Click( )  

  Dim TempSrcFile As String  

  Dim TempDestFile As String  

  Dim TempFile As String  

  Dim HzFile As String  

  Dim To61202(32) As Integer  

  Dim p(1 To 2) As Byte  

  Dim C1, C2  

  Dim rec As Integer  

  Dim Location As Long '汉字在字库中的位置  

  Dim Hz(0 To 31) As Byte '转换完的32字节的字模数据  

  Dim Buf1(0 To 31) As Byte '暂存转换过程中的32字节字模数据  

  Dim HzAll( ) As Byte '存放全部字模数据的动态数组  

  Dim LoopAll As Integer  

  Dim bit, k2, k3 As Byte  

  Dim i, j, i1, k, k1, k4, k5, k6 As Integer  

  DestTxt.Text = "" 'DestTxt是目标文本框,存放转换后的16进制数据  

  Flag = 0  

  TempDestFile$ = App.Path + "\" + "TempDest.txt"  

  If FileExists(TempDestFile$) Then Kill TempDestFile  
'FileExists是一个检查文件是否存在的自定义函数  

  If SrcTxt.Text = "" Then '汉字输入框内无汉字则退出  

  MsgBox "没有可以转换的字模源文件!"  

  Exit Sub  

  End If  

  HzNum = Len(SrcTxt.Text) '获得汉字的个数  

  ReDim HzAll(0 To HzNum * 32 - 1) '重新定义动态数组的上界  

  Open TempFile For Output As #1  

  Print #1, SrcTxt.Text  

  Close #1  
  
作者: Felix021      封  2007-9-8 01:39   回复此发言   删除  

--------------------------------------------------------------------------------

6 回复:VB点阵字库读取 搜索留存  
http://www.baidu.com/s?tn=myie2dg&ie=gb2312&bs=16%B5%E3%D5%F3%D7%D6%BF%E2+%B6%C1%C8%A1+vb&sr=&z=&cl=3&f=8&wd=%B5%E3%D5%F3+%B6%C1%C8%A1+vb&ct=0  

  
作者: Felix021      封  2007-9-8 01:40   回复此发言   删除  

--------------------------------------------------------------------------------





欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]