Einzelnen Beitrag anzeigen

Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: JPEG aus TImage in bestimmter Größe drucken

  Alt 28. Sep 2007, 13:48
Hallo

Schau dir mal diesen codeschnipsel zum proportionalen resizen an ... nicht beim drucken, aber eventuell hilfts als zündfunke ...

Ein bild als tImage soll so in ein Panel eingeblendet werden, daß es optimal groß proportional dargestellt wird....

Image12.Parent wäre das Panel, wäre in deinem Fall der canvas des blattes zum drucken ... ?

Delphi-Quellcode:
          { JPEGImage }
          ms1.Seek(0, soFromBeginning);
          jpg3.LoadFromStream(ms1);
        
          { Resize }
          if (Image12.Parent.ClientWidth>0) and (jpg3.Width>0) then
            begin
              { Seitenverhältnis Container }
              r1 := (Image12.Parent.ClientHeight/Image12.Parent.ClientWidth);
              { Seitenverhältnis Bild }
              if (jpg3.Width>0)
                then r2 :=(jpg3.Height/jpg3.Width)
                else r2 := 0.0;
              { Container passend zum Bild in Übergeordneten Panel einpassen, damit Stretch automatisch funktioniert }
              if (r1>r2)
                then
                  begin
                    { Container ist im Verhältnis höher als Bild, also auf Breite anpassen }
                    { Faktor damit Bild so breit wie Container wird }
                    r1 := Image12.Parent.ClientWidth/jpg3.Width;
                    Image12.Width := Image12.Parent.ClientWidth;
                    Image12.Left := 0;
                    Image12.Height := Trunc(r1* jpg3.Height);
                    Image12.Top := (Image12.Parent.ClientHeight-Image12.Height) div 2;
                  end
                else
                  begin
                    { Container ist im Verhältnis breiter als Bild, also auf Höhe anpassen }
                    { Faktor damit Bild so hoch wie Container wird }
                    r1 := Image12.Parent.ClientHeight/jpg3.Height;
                    Image12.Height := Image12.Parent.ClientHeight;
                    Image12.Top := 0;
                    Image12.Width := Trunc(r1* jpg3.Width);
                    Image12.Left := (Image12.Parent.ClientWidth-Image12.Width) div 2;
                  end;
              Image12.Picture.Assign(jpg3);
            end;
Peter Schaible
  Mit Zitat antworten Zitat