PDA

Ver la Versión Completa : Duda sobre la funcion StretchDIBits


Javi2
28-11-2005, 12:38:30
Hola,

Estoy utilizando la función StretchDIBits para imprimir bitmaps en una impresora de tickets. En bastantes casos me imprime la imagen correctamente pero en otros no me hace nada. No se porque me ocurre esto.

¿Alguien me puede dar una explicación lógica sobre el funcionamiento de esta función y por qué falla a veces?

Por si sirve de algo, aquí está el código de la llamada:


procedure PrintPicture(ARect : TRect; ABitmap : TBitmap);
var
BitmapHeader: pBitmapInfo;
BitmapImage : Pointer;
HeaderSize : DWord;
ImageSize : DWord;
begin
GetDIBSizes(ABitMap.Handle, HeaderSize, ImageSize);
try
BitMapHeader := AllocMem( HeaderSize );
BitMapImage := AllocMem( ImageSize );
GetDIB( ABitMap.Handle, ABitmap.Palette, BitmapHeader^, itmapImage^ );
StretchDIBits(Printer.Canvas.Handle,
0, 0,
ARect.Right - ARect.Left,
ARect.Bottom - ARect.Top,
0, 0,
ABitMap.Width, ABitMap.Height,
BitMapImage, BitMapHeader^, DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(BitMapImage, ImageSize);
FreeMem( BitMapHeader, HeaderSize);
end;
end;

Muchas gracias de antemano