Einzelnen Beitrag anzeigen

axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#1

Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 02:57
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
  Mit Zitat antworten Zitat