条形码的编码规则不外乎是通过线条和线条间间隙的宽窄不同来表示二进制的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;
}
第四步,将画好的线进行保存