向ncqingchuan1976 等高手提问:斑马打印机打印中文,将中文转换为编码的技术细节
http://bbs.csdn.net/topics/310040805
这里看到个将中文输出到图片,然后对图片进行编码的代码。
Dim i As Integer, j As Integer '开始取点
Dim Sum As Integer
For j = 0 To Height - 1 '由于内存中的图片是倒置,所以要反取数据
For i = 0 To Width \ 4 - 1
Sum = 0
For m As Integer = 0 To 3 '由于4个点可用1个十六进制数表示因此一次取4个点进行转换
If Image.GetPixel(i * 4 + m, j).B = 0 Then '由于只打印黑白点所以根据RGB分量判断是否需要打印该点
Sum += 1 << (3 - m) '通过移位操作将该点的信息与一个数据的BIT相对应
End If
Next
TempString.Append(Hex(Sum)) '将4个点取得的数据转换成16进制数据并存入临时变量
Next
Next
这部分不是很明白啊,“由于内存中的图片是倒置,所以要反取数据”似乎没看到反着取(从下到上),从代码上看,纵向逐像素For j = 0 To Height - 1,横向4个像素一组For i = 0 To Width \ 4 - 1,
但下面这行就不明白是什么意思了:
Sum += 1 << (3 - m) '通过移位操作将该点的信息与一个数据的BIT相对应
哪位给讲解下?谢谢
------解决方案--------------------如果设备有中文字库,那就不要用你的程序去绘制中文点阵。在要求高速的工业打码操作上,速度差十倍。
------解决方案--------------------
如果是在WinNT(XP,WIN7)操作平台下与班码打印机进行打印。那可以直接用FastReport这类的东西直接打印。。。
如果是在移动试打印这还真没招。最好用字库,目前我也在为这东西目前没找到中文字库要怎么弄。。,公司用的是PDA WinCE平台要是像楼主说的那转成那种图片后再进行压缩。那慢的。。。直接在Win下还是用FastReport发送数据吧,不用从ZPL语言转。
------解决方案--------------------还有一种方式,调用CODESOFT的API打印条码,看对你有没有帮助
这种方式确定可以,以前试过,就是要在客户端装CODESOFT。
------解决方案--------------------再有就是装好打印机驱动,把它当成普通打印使。