Einzelnen Beitrag anzeigen

Benutzerbild von peschai
peschai

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

Re: Ein Bild komplett in Image1.Picture anzeigen lassen

  Alt 4. Okt 2007, 10:57
Hallo

Schau dir mal diesen codeschnipsel zum proportionalen resizen an
Ein bild als tImage soll so in ein Panel eingeblendet werden, daß es optimal groß proportional dargestellt wird.... Image12.Parent wäre das Panel...

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