Registriert seit: 29. Jan 2007
Ort: daheim
471 Beiträge
Delphi 10.2 Tokyo Enterprise
|
Re: Drucken aus einer Form
16. Feb 2007, 09:16
ich hab mir an Ausdrucken auch schon die Zähne ausgebissen, bin dann auf diesen Code gestoßen
Mußte die Berechnung der Header und Imagesize noch anpassen, lief ursprünglich mit getmem, da kam aber ab und zu nur Mißt aus dem Drucker, mit GETDIBSizes funzts.
PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
VAR
BitmapHeader: pBitmapInfo;
BitmapImage,header,bits : POINTER;
HeaderSize, BitsSize: Cardinal;
ImageSize : DWORD;
nographics:boolean;
BEGIN
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);;
Bitmapheader := VirtualAlloc(nil, HeaderSize, MEM_COMMIT, PAGE_READWRITE);
BitmapImage := VirtualAlloc(nil, ImageSize, MEM_COMMIT, PAGE_READWRITE);
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
VirtualFree(Bitmapheader, 0, MEM_FREE);
VirtualFree(bitmapimage, 0, MEM_FREE);
END
END {PrintBitmap};
Matthias
|