打印大图片问题(JPG)的问题?(100分)

  • 主题发起人 主题发起人 netkk
  • 开始时间 开始时间
N

netkk

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是 Tprinter.canvas.StretchDraw
但如果JPG是大的文件,打印到性能好的打印机时正常;
但如果是一般的喷墨打印机就会是一张白纸。

可否帮忙以上问题,请mail给我:kkmail@21cn.com
 
给打印机加内存
 
可以先存成 .QRP文件后,打印文件!
 
直接用Tqrimge
 
呵呵,前些天刚好也遇到这个问题,并且也提过。不过现在解决了,就将方法告诉你:
方法是不要调用画布的图象拉伸,我自己写了一个函数,你可以试试!
//使用方法,将打印机的画布和目标矩形以及位图对象做为参数调用
procedure DrawImage(Canvas: TCanvas;
DestRect: TRect;
ABitmap:TBitmap);
var
Header, Bits: Pointer;
HeaderSize: DWORD;
BitsSize: DWORD;
begin

GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
Header := AllocMem(HeaderSize);
Bits := AllocMem(BitsSize);
try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,DestRect.Right-DestRect.Left, DestRect.Bottom-DestRect.Top,0, 0, ABitmap.Width, ABitmap.Height, Bits,TBitmapInfo(Header^),DIB_RGB_COLORS, SRCCOPY);
finally
Freemem(Header, HeaderSize);
FreeMem(Bits, BitsSize);
end;

end;
 
在打印机的属性中---》图形选项---》图形方式---》选择使用光栅图形,保存后就可以了。
原因还是你的打印机内存太小。
 
接受答案了.
 

Similar threads

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