Hallo!
Ich programmiere grad ein Fotopräsentationsprogramm, das kleine Vorschaubilder zeigen soll. Ich habe es schon geschafft, eine recht flotte Vorschau zu realisieren, aber es ist noch lang nicht auf XP-Niveau. Mein Code:
Delphi-Quellcode:
function TFotoShow.VorschauladenEinzeln(sFoto:TFoto):boolean; //TFoto ist ein Record mit einem TBitmap
var LadImage: Timage;
Verh: Double;
hoehe, weite,x: integer;
begin
result := true;
try
LadImage := TImage.Create(nil);
LadImage.Picture.LoadFromFile(sFoto.FileScr);
if (LadImage.Picture.Width > 0) AND (LadImage.Picture.Height > 0)then
begin
Verh := LadImage.Picture.Width/LadImage.Picture.Height;
sFoto.Vorschau.Width := VorschauGr;
sFoto.Vorschau.Height:= VorschauGr;
if Verh >= 1 then
begin
hoehe := Round(VorschauGr/Verh);
x := round((VorschauGr-hoehe)/2);
sFoto.Vorschau.Canvas.StretchDraw(Rect(0,x,VorschauGr,hoehe+x),LadImage.Picture.Graphic); // das ist das langsamste
end ELSE
begin
weite := Round(VorschauGr*Verh);
x := round((VorschauGr-weite)/2);
sFoto.Vorschau.Canvas.StretchDraw(Rect(x,0,weite+x,VorschauGr),LadImage.Picture.Graphic); // das ist das langsamste
end;
end ELSE
begin
result := false;
Fehlerprotokoll.Add('Fehler bei den Bildgrößen bei "'+sFoto.FileScr+'"');
end;
LadImage.Free;
except
Fehlerprotokoll.Add('Kann keine Vorschau erzeugen von "'+sFoto.FileScr+'"');
result := false;
if LadImage <> nil then LadImage.Free;
end;
end;
Hat von euch einer eine Idee, wie man die Bildverkleinerung optimieren kann?
Grüße