sábado, 5 de setembro de 2009

Imprimindo um bitmap utilizando tprinter

{As vezes, quando utilizados os médoto Draw e StretchDraw da propriedade Canvas do objeto TPrinter, a imagem não é impressa, para corrigir isto, utilize esta procedure, que passando como parâmetros a instância Printer.Canvas, Margem Esquerda, Margem Superior }


procedure .DrawImage( Canvas : TCanvas; X, Y, Width, Height : Integer; ABitmap : TBitmap);
var
Header, Bits : Pointer;
HeaderSize : Integer;
BitsSize : Longint;
begin
GetDibSizes( ABitmap.Handle, HeaderSize, BitsSize );
Header := AllocMem( HeaderSize );
Bits := AllocMem( BitsSize);
try
GetDib( ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle,X,Y,Width,Height,0,0,ABitmap.Width,ABitmap.Height,Bits,
TBitmapInfo(Header^),DIB_RGB_COLORS,SRCCOPY);
finally
FreeMem( Header, HeaderSize);
FreeMem( Bits, BitsSize );
end;
end;

Nenhum comentário:

Postar um comentário