Ja, StretchDraw hilft dir da weiter. Und wenn du das ganze Papier ausnutzen möchtest und dabei aber das Breiten-Höhen-Verhältnis beibehalten werden soll, dann errechne das für StretchDraw benötigte Rechteck mit der nachfolgenden Routine
Delphi-Quellcode:
(* ***********************************************************
Ein Rechteck fuer "StretchDraw" auf dem Drucker erzeugen
*********************************************************** *)
function ScaleToPrint (Img:TImage;Prn:TPrinter;Center:Boolean):TRect;
var h,w,r:Single; Rect:TRect;
begin
with Prn do
with Img.Picture.Graphic do
begin
{ Verhaeltniss errechnen }
w := PageWidth/Width;
h := PageHeight/Height;
{ begrenzendes Verhaeltniss }
if w<h then r:=w else r:=h;
{ in linke obere Ecke legen }
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := Trunc(r*Width);
Rect.Bottom := Trunc(r*Height);
{ Center ? }
if Center then
begin
Rect.Left := (PageWidth-Rect.Right) div 2;
Rect.Right := Rect.Right+Rect.Left;
Rect.Top := (PageHeight-Rect.Bottom) div 2;
Rect.Bottom := Rect.Bottom+Rect.Top;
end;
end;
{ zuweisen }
Result:=Rect;
end;