第二步:绘制条码图片
************************************************
* 绘制条码图片(BMP)
*
************************************************
* 进入参数:
*
* 条码代码(由10BS四个字符的代码组成
*
* 可视字符
*
* 图片文件名
*
************************************************
* 返回参数(无)
*
************************************************
PARAMETERS cgcode,cgtext,cgfile
cgcode=STRTRAN(cgcode,"B",REPLICATE("1",3))
&& 将代码串中的“B”用3个“1”替换
cgcode=STRTRAN(cgcode,"S",REPLICATE("0",3))
&& 将代码串中的“S”用3个“0”替换
nglen=LEN(cgcode)
&& 计算代码位数
ogBitmap=NEWOBJECT("gpBitmap", "_GDIplus.vcx")
&& 建立绘图板对象
WITH ogBitmap
.Create(nglen+4,40)
&& 设定绘图板宽度和高度
.SetResolution(100,100)
&& 設定分辨率(x,y 的 DPI 値)
ENDWITH
ogColor = NEWOBJECT("gpColor", "_GDIplus.vcx")
&& 建立颜色对象
ogPen = NEWOBJECT("gpPen", "_GDIplus.vcx")
&& 建立画笔对象
ogFont = NEWOBJECT("gpFont", "_GDIplus.vcx")
&& 建立字体对象
ogStringFormat = NEWOBJECT("gpStringFormat", "_GDIplus.vcx")
ogTextBrush = NEWOBJECT("gpSolidBrush", "_GDIplus.vcx")
ogPoint = NEWOBJECT("gpPoint", "_GDIplus.vcx")
ogGraphics = NEWOBJECT("gpGraphics", "_GDIplus.vcx")&& 建立图形对象
WITH ogGraphics
.CreateFromImage(ogBitmap)
&& 指定图形对象的设备,此处指向已建立的ogBitmap绘图板对象
ogColor.Set(255,255,255)
&& 设定颜色(设定为白色)
.Clear(ogColor)
&& 用役定的颜色填充整个图形,可用于背景颜色
** 绘制条码
ogColor.Set(0,0,0)
&& 改变颜色(设定为黑色)
ogPen.Create(ogColor,1)
&& 將指定的赋予画笔,并指定画笔宽度
FOR ngi=1 TO nglen
&& 开始循环绘制条码
IF SUBSTR(cgcode,ngi,1)="1"
&& 逐个取出字符代码
ngt=ngi*1+1
&& 计算当前的X座标
.DrawLine(ogPen,ngt,1,ngt,24)
&& 用设定的画笔绘制条码
ENDIF
ENDFOR
** 打印可视字符
ogFont.Create("Arial", 9, 0, 3)
&& 设置文本字体
ogTextBrush.Create(ogColor)
&& 设定文本颜色
ngstat=(nglen-LEN(cgtext)*8)/2+2
ogPoint.Create(ngstat, 26)
&& 设定文本左上角位置
.DrawStringA(cgText, ogFont, ogPoint, ogStringFormat, ogTextBrush)
ENDWITH
ogBitmap.SaveToFile(cgfile,"image/bmp")
&& 将绘图板保存为指定的文件
RELEASE ALL LIKE og*
&& 删除所有绘图对象
RETURN