條形碼的編碼規(guī)則不外乎是通過線條和線條間間隙的寬窄不同來表示二進(jìn)制的1和0,通過對條形碼的編碼規(guī)則的研究,完全可以用畫圖的方式在任何打印機(jī)上得到條形碼。
下面在C#中通過畫線的方法實現(xiàn)CODE39碼的生成。
CODE39碼的編碼規(guī)則是:
1、 每五條線表示一個字符;
2、 粗線表示1,細(xì)線表示0;
3、 線條間的間隙寬的表示1,窄的表示0;
4、 五條線加上它們之間的四條間隙就是九位二進(jìn)制編碼,而且這九位中必定有三位是1,所以稱為39碼;
5、 條形碼的首尾各一個*標(biāo)識開始和結(jié)束
第一步,首先進(jìn)行符號的編碼配置
如“1”,使用黑白條表示為NnNwWnWnN(窄黑 窄白 窄黑 寬白 寬黑 窄白 寬黑 窄白 窄黑),表示為二進(jìn)制0和1為“000110100”
“A”,使用黑白條表示為WnNnNwNnW(寬黑 窄白 窄黑 窄白 窄黑 寬白 窄黑 窄白 寬黑),表示為二進(jìn)制0和1為“100001001”
第二步,需要轉(zhuǎn)換編碼
for (int i = 0; i < Code.Length; i++)
{
Code39 = Code39 + (string)Decode[Code.Substring(i, 1)] +SPARATOR;
}
第三步,畫線
for (int i = 0; i < Code39.Length; i++)
{
//繪制線條
if ("0".Equals(Code39.Substring(i, 1)))
{
for (int j = 0; j < WidthXI; j++)
{
g.DrawLine(pBlack, position + j, 30, position + j, 30 + LineHeight);
}
position += WidthXI;
}
else
{
for (int j = 0; j < WidthCU; j++)
{
g.DrawLine(pBlack, position + j, 30, position + j, 30 + LineHeight);
}
position += WidthCU;
}
i++;
//繪制間隔線
if ("0".Equals(Code39.Substring(i, 1)))
{
position += WidthXI;
}
else
{
position += WidthCU;
}
}
return;
}
第四步,將畫好的線進(jìn)行保存