关于二维条码控件导出条码图片为bmp格式后的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 cnhotel
  • 开始时间 开始时间
C

cnhotel

Unregistered / Unconfirmed
GUEST, unregistred user!
用的dlsoft的二维条码PDF417控件,需要在FastReport中打印该条码!
不晓得如何在FR中直接能打印这个二维条码?
现在的想法是折衷:
先将生成的二维条码导出为bmp图片,然后在FR中用Picture Object调用指定路径的图片进行打印.

遇到的问题是:

1、
这个二维条码通过自带的函数导出为bmp格式的图片在画图、AcdSee等软件中均可正常打开,打印后可以正常扫描识别!

但在Delphi中不管是Image控件还是其它的,打开该控件导出的bmp图片均提示"bitmap image is not valid"...不能加载使用?

在画图中打开后另存为bmp能加载到Image中,但打印出来后的条码无法正确扫描识别!
不知何故?

2、既然控件导出的图片不能加载,就考虑了程序导出这个图片,以下操作:
procedure Tmain_f.makebarcode;
var bmp:Tbitmap;
rect:TRect;
pScalex,pScaley:integer;
begin
try
Barcode21.SecurityLevel:=3;
Barcode21.Xunit:=10;
Barcode21.Yunit:=30;
Barcode21.Columns:=7;
Barcode21.Caption:='987654321abcdefg';

//保存图片
bmp:=Tbitmap.Create;
bmp.PixelFormat := pf4bit;
pScalex:=GetDeviceCaps((Printer.Handle),LOGPIXELSX);
pScaley:=GetDeviceCaps((Printer.Handle),LOGPIXELSY);
bmp.Width:=(Barcode21.ImageWidth*pScalex) div 5080;
bmp.Height:=(Barcode21.ImageHeight*pScaley) div 5080;
rect.Left:=0;
rect.top:=0;
rect.Right:=bmp.Width;
rect.Bottom:=bmp.Height;
bmp.Canvas.StretchDraw(rect,Barcode21.Picture.Graphic);
bmp.SaveToFile('c:/Temp.bmp');
finally
bmp:=nil;
bmp.free;
end;
end;

这样导出来的图片的问题也出现问题,就是打印后无法正常扫描识别~

控件本身的打印示例是直接发往打印机区域打印的,打印出很正常!

请问该如何是好?有没有其它方法可以解决呢?因为这个条码在标签中是指定位置摆放的,单打出标签裁减后再贴上去有违程序风格...
代码:
 
試試其它方法,如將條碼拍照,條件是條碼放在某一容器的固定位置,然後存成圖片再拿來打印: //Bitmap.Canvas.CopyRect(B, TBitmapLayer(Selection).Bitmap.Canvas, A); //拷贝图层画布
Bitmap.Canvas.CopyRect(B, ImgView.Canvas, A); //拷贝ImgView画布
Bitmap.SaveTofile('./temp.bmp');
 
感谢楼上的关注
问题基本解决,是在于换算精度上出了问题~~
谢谢,结贴了
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部