想在vb6程序中实现,将12345转换为code39的条码,然后用picturebox或image接收,这样就可以存到本地或者服务器上边了,请各位赐教,谢谢了

解决方案 »

  1.   

    在你的电脑上安装 CODE39字体,把 PictureBox的font属性选为 CODE39,字体大小选初号或小初。
    然后在PictureBox上直接Print 你要的字符就行了。
    CODE39码的编码规则是:
      ① 每五条线表示一个字符;
      ② 粗线表示1,细线表示0;
      ③ 线条间的间隙宽的表示1,窄的表示0;
      ④ 五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码;
      ⑤ 条形码的首尾各一个*标识开始和结束。
      

  2.   

    以下是三九码的标准字符集:
    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 了。
    知道了原理,绘图应该是很简单的事情了,我就不多说了。
      

  3.   

    请问二楼的哥们,picturebox选择code39字体后,如何将值穿进去自动转化为code39,暂没找到picturebox有那个属性啊?比如我想将123456传进去转化为code39值,谢谢指教。
      

  4.   

    Chen8013你说的方法恐怕不行,我下了一个code39字体,然后在写字板中输入数字,自己就转化维条码,不过打到白纸上,然后扫描枪扫不出来,可能是精度的问题,不过还是感谢你提供了思路。
    也感谢SupermanKing
      

  5.   

    那你还是按2F的编码方法自己在PictureBox画吧。
    他说的已经够详细了。你说的输入在写字板中,打印出来扫描枪不能识别,估计是因为字符之间没那个‘间隔’的缘故吧。PictureBox中可以直接用Print方法,前提是你要先设置好字体和字符大小:
    PictureBox1.Print "12345"但我估计这跟你在写字板中的结果没多大区别:扫描枪仍然不能识别。
      

  6.   

    真是郁闷,无非就是个用 Line 方法实现的问题,唉!当我白说了。