Thema: Delphi Drucken aus einer Form

Einzelnen Beitrag anzeigen

matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Drucken aus einer Form

  Alt 16. Feb 2007, 08: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
  Mit Zitat antworten Zitat