Thema: Delphi Canvas ausdrucken

Einzelnen Beitrag anzeigen

easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 

Re: Canvas ausdrucken

  Alt 12. Aug 2004, 11:24
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;
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat