Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
Delphi 6 Personal
|
Re: Bildverhältnis in einem Image
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.
|