Okaydokay! Aber dann solltest du nicht mit Screen.Width und Screen.Height arbeiten, sondern mit Form.Width und Form.Height. Denn deine Anwendung ist ja nicht im Vollbildmodus...
//edit: Der Fall c=1 funktioniert nur richtig, wenn deine Form genauso breit wie hoch ist!
So gehts:
uses math;
Delphi-Quellcode:
procedure ResizeImageProportional(aImage:TImage;FormWidth,FormHeight:integer);
var ratio:single;
newwidth,newheight:integer;
begin
ratio:=aImage.picture.width/aImage.picture.height;
if ratio>1 then
begin
newheight:=min(round(FormWidth/ratio), FormHeight);
newwidth:=round(newheight*ratio);
end
else //ratio<1
begin
newwidth:=min(round(FormHeight*ratio),FormWidth);
newheight:=round(newwidth/ratio);
end;
aImage.Left:=0;
aImage.top:=0;
aImage.width:=newwidth;
aImage.height:=newheight;
end;
Aufrufen mit:
Delphi-Quellcode:
ResizeImageProportional(Image1,Form1.Clientwidth,Form1.Clientheight);