呵呵,前些天刚好也遇到这个问题,并且也提过。不过现在解决了,就将方法告诉你:
方法是不要调用画布的图象拉伸,我自己写了一个函数,你可以试试!
//使用方法,将打印机的画布和目标矩形以及位图对象做为参数调用
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;