关于条形码的问题 想在vb6程序中实现,将12345转换为code39的条码,然后用picturebox或image接收,这样就可以存到本地或者服务器上边了,请各位赐教,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在你的电脑上安装 CODE39字体,把 PictureBox的font属性选为 CODE39,字体大小选初号或小初。然后在PictureBox上直接Print 你要的字符就行了。CODE39码的编码规则是: ① 每五条线表示一个字符; ② 粗线表示1,细线表示0; ③ 线条间的间隙宽的表示1,窄的表示0; ④ 五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码; ⑤ 条形码的首尾各一个*标识开始和结束。 以下是三九码的标准字符集:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,-,., ,$,/,+,%,*以下是字符集对应的字符数值(十进制数)52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,168,162,138,42,148比如字符“0”对应52,即二进制表示为 000110100,如果把二进制用线条表示,则是■□■□□□■■■□■■■□■■□■□□□■■■□■■■□■■□■□□□■■■□■■■□■■□■□□□■■■□■■■□■■□■□□□■■■□■■■□■■□■□□□■■■□■■■□■在三九码中,无论是线条的白色部分或是黑色部分,都以线条宽度作参考进行编码的,宽度小的为0,宽度大的为1,上面的图形是这样表示二进制代码的:■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■0 0 0 1 1 0 1 0 0三九码之所以叫“三九”,是因为他的格式固定为九个二进制位为一个字符,而这九个二进制位中固定有三个二进制位为1,这样就构成了三九码,这也是三九码名字的由来。因为三九码每个字符间存在一个间隔,而这个间隔就以0表示,如字符 *0 那么就是 148 与 52 的组合,并且中间加个间隔二进制位 0,二进制状态如下: "*" 间隔 "0" 148 52010010100 0 000110100图形表示: ■□□□■□■■■□■■■□■ □ ■□■□□□■■■□■■■□■0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0合并起来看■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■这样就表示了两个字符 *0 了。知道了原理,绘图应该是很简单的事情了,我就不多说了。 请问二楼的哥们,picturebox选择code39字体后,如何将值穿进去自动转化为code39,暂没找到picturebox有那个属性啊?比如我想将123456传进去转化为code39值,谢谢指教。 Chen8013你说的方法恐怕不行,我下了一个code39字体,然后在写字板中输入数字,自己就转化维条码,不过打到白纸上,然后扫描枪扫不出来,可能是精度的问题,不过还是感谢你提供了思路。也感谢SupermanKing 那你还是按2F的编码方法自己在PictureBox画吧。他说的已经够详细了。你说的输入在写字板中,打印出来扫描枪不能识别,估计是因为字符之间没那个‘间隔’的缘故吧。PictureBox中可以直接用Print方法,前提是你要先设置好字体和字符大小:PictureBox1.Print "12345"但我估计这跟你在写字板中的结果没多大区别:扫描枪仍然不能识别。 真是郁闷,无非就是个用 Line 方法实现的问题,唉!当我白说了。 谁能给一个winsock 下载组件或类 哪里有SendMessage,或postmessage的详细介绍啊,最主要的是关于鼠标常量的值啊 为了高人指点,散分!(关于控制音量的API) 送分100分:关于ARIAL汉字显示方框的问题 软件思路问题? 如何建立像DOS那样的命令,如:COPY C:\A D:\ 如何将知道得IP地址转化为相对因得服务器名? VB和SQL应用问题 十万火急! 通过网络,进行语音聊天的程序。 如何实现TreeView热滚动。~~~~万分火急~~ 随机采集到的数据,怎么找峰值? 串口数据的接收问题
然后在PictureBox上直接Print 你要的字符就行了。
CODE39码的编码规则是:
① 每五条线表示一个字符;
② 粗线表示1,细线表示0;
③ 线条间的间隙宽的表示1,窄的表示0;
④ 五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码;
⑤ 条形码的首尾各一个*标识开始和结束。
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,-,., ,$,/,+,%,*以下是字符集对应的字符数值(十进制数)
52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,168,162,138,42,148比如字符“0”对应52,即二进制表示为 000110100,如果把二进制用线条表示,则是
■□■□□□■■■□■■■□■
■□■□□□■■■□■■■□■
■□■□□□■■■□■■■□■
■□■□□□■■■□■■■□■
■□■□□□■■■□■■■□■
■□■□□□■■■□■■■□■
在三九码中,无论是线条的白色部分或是黑色部分,都以线条宽度作参考进行编码的,宽度小的为0,宽度大的为1,上面的图形是这样表示二进制代码的:
■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■
0 0 0 1 1 0 1 0 0三九码之所以叫“三九”,是因为他的格式固定为九个二进制位为一个字符,而这九个二进制位中固定有三个二进制位为1,这样就构成了三九码,这也是三九码名字的由来。
因为三九码每个字符间存在一个间隔,而这个间隔就以0表示,如字符 *0 那么就是 148 与 52 的组合,并且中间加个间隔二进制位 0,二进制状态如下:
"*" 间隔 "0"
148 52
010010100 0 000110100
图形表示:
■□□□■□■■■□■■■□■ □ ■□■□□□■■■□■■■□■
0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0
合并起来看
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■
这样就表示了两个字符 *0 了。
知道了原理,绘图应该是很简单的事情了,我就不多说了。
也感谢SupermanKing
他说的已经够详细了。你说的输入在写字板中,打印出来扫描枪不能识别,估计是因为字符之间没那个‘间隔’的缘故吧。PictureBox中可以直接用Print方法,前提是你要先设置好字体和字符大小:
PictureBox1.Print "12345"但我估计这跟你在写字板中的结果没多大区别:扫描枪仍然不能识别。