[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]


Use the following code. Remember to include the Printers unit in the uses
clause :

Lines followed by // ** are essential. The others are to get the
scaling correct otherwise you end up with extremely small images.
Printer resolutions are higher than your screen resolution.


--------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  ScaleX, ScaleY: Integer;
  R: TRect;
begin
  Printer.BeginDoc;  // **
  with Printer do
  try
    ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
    ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
    R := Rect(0, 0, Image1.Picture.Width * ScaleX,
      Image1.Picture.Height * ScaleY);
    Canvas.StretchDraw(R, Image1.Picture.Graphic);  // **
  finally
    EndDoc;  // **
  end;
end;

[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]