Hallo
nach dem ich nach einem Druckerwechsel Probleme hatte, dass Bitmaps
mit stretchdraw teilweise nicht mehr gedruckt wurde habe ich das
Drucken der Bitmaps auf die Procedure PrintBitmap (habe ich hier
im Forum gefunden) umgestellt.
Delphi-Quellcode:
// Based on posting to borland.public.delphi.winapi by Rodney E Geraghty,
// 8/8/97. Used to print bitmap on any Windows printer.
PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
VAR
BitmapHeader: pBitmapInfo;
BitmapImage : POINTER;
HeaderSize : DWORD; // Use DWORD for compatibility with D3-D5
ImageSize : DWORD;
BEGIN
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
GetMem(BitmapHeader, HeaderSize);
GetMem(BitmapImage, ImageSize);
TRY
GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top, // Destination Origin
DestRect.Right - DestRect.Left, // Destination Width
DestRect.Bottom - DestRect.Top, // Destination Height
0, 0, // Source Origin
Bitmap.Width, Bitmap.Height, // Source Width & Height
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY)
FINALLY
FreeMem(BitmapHeader);
FreeMem(BitmapImage)
END
END {PrintBitmap};
Das funktioniert auch sehr gut mit Bitmaps.
Mit jpg bekomme ich das aber nicht zum Laufen, da die Procedur ein TBitmap
erwartet, aber mit einem TGraphic nichts anfangen kann.
Kann mir jemand sagen, wie eine Procedure aussehen muss, die auch TGraphic verarbeiten kann?
Gruß
Jens