條形碼的編碼規則不外乎是通過線條和線條間間隙的寬窄不同來表示二進制的1和0,通過對條形碼的編碼規則的研究,完全可以用畫圖的方式在任何打印機上得到條形碼。
下面在C#中通過畫線的方法實現CODE39碼的生成。
CODE39碼的編碼規則是:
1、 每五條線表示一個字符;
2、 粗線表示1,細線表示0;
3、 線條間的間隙寬的表示1,窄的表示0;
4、 五條線加上它們之間的四條間隙就是九位二進制編碼,而且這九位中必定有三位是1,所以稱為39碼;
5、 條形碼的首尾各一個*標識開始和結束
第一步,首先進行符號的編碼配置
如“1”,使用黑白條表示為NnNwWnWnN(窄黑 窄白 窄黑 寬白 寬黑 窄白 寬黑 窄白 窄黑),表示為二進制0和1為“000110100”
“A”,使用黑白條表示為WnNnNwNnW(寬黑 窄白 窄黑 窄白 窄黑 寬白 窄黑 窄白 寬黑),表示為二進制0和1為“100001001”
第二步,需要轉換編碼
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;
}
第四步,將畫好的線進行保存