{1.} uses printers; procedure TForm1.Button1Click(Sender: TObject); var ScaleX, ScaleY: Integer; RR: TRect; begin with Printer do begin BeginDoc; // Mit BeginDoc wird ein Druckauftrag initiiert. // The StartDoc function starts a print job. try ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch; ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch; // Informationen uber die Auflosung // Retrieves information about the Pixels per Inch of the Printer. RR := Rect(0, 0, Image1.picture.Width * scaleX, Image1.Picture.Height * ScaleY); Canvas.StretchDraw(RR, Image1.Picture.Graphic); // An die Auflosung anpassen // Stretch to fit finally EndDoc; //Methode EndDoc beendet den aktuellen Druckauftrag und schlie?t die // Textdatei-Variable. // Steht in finally - um auch bei Abbruch des Druckauftrages Papierausgabe // sicherzustellen end; end; end; {2.} // Based on posting to borland.public.delphi.winapi by Rodney E Geraghty, 8/8/97. procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap); var BitmapHeader: pBitmapInfo; BitmapImage: Pointer; HeaderSize: DWORD; 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};