Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Bildverhältnis in einem Image

  Alt 11. Aug 2005, 19:45
http://www.delphipraxis.net/internal...=217165#217165

Umgebaut zu:
Delphi-Quellcode:
function ScaleTo(Image: TImage; aRect: TRect; Center: Boolean): TRect;
var
  h, w, r: Single;
  tmpRect: TRect;
begin
  with Image.Picture.Graphic do
  begin
    { Verhaeltniss errechnen }
    w := aRect.Right / Width;
    h := aRect.Bottom / Height;
    { begrenzendes Verhaeltniss }
    if w < h then r := w else r := h;
    { in linke obere Ecke legen }
    tmpRect.Left := 0;
    tmpRect.Top := 0;
    tmpRect.Right := Trunc(r * Width);
    tmpRect.Bottom := Trunc(r * Height);
    { Center ? }
    if Center then
    begin
      tmpRect.Left := (aRect.Right - tmpRect.Right) div 2;
      tmpRect.Right := tmpRect.Right + tmpRect.Left;
      tmpRect.Top := (aRect.Bottom - tmpRect.Bottom) div 2;
      tmpRect.Bottom := tmpRect.Bottom + tmpRect.Top;
    end;
  end;
  Image.Left := tmpRect.Left;
  Image.Top := tmpRect.Top;
  Image.Width := tmpRect.Right - tmpRect.Left;
  Image.Height := tmpRect.Bottom - tmpRect.Top;
end;

// Aufruf z.B. so:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('Test.bmp');
  ScaleTo(Image1, Panel1.ClientRect, True);
end;
Sollte deine Anforderungen erfüllen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat