Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

[GDI+] Zeichnen riesiger Bilder optimieren

  Alt 29. Mär 2006, 12:53
Hi!

Ich habe ein 35 MegaPixel-Bild und möchte bestimmte Ausschnitte dieses Bildes schnell erhalten.
Leider benötigt TGPGraphics.DrawImage zu lange um den Auschnitt aus dem Original in meinen Kontext zu zeichnen (Zeitmessung durchgeführt).
(Der genaue Hintergrund ist ein ScrollBox bei der man in Bilder zoomen kann und dann scrollt)

Delphi-Quellcode:
ClientRect := Parent.ClientRect;
TempBitmap := TGPBitmap.Create(Min(Width, ClientRect.Right), Min(Height, ClientRect.Bottom));
DestRect := MakeRect(0, 0, Integer(TempBitmap.GetWidth), Integer(TempBitmap.GetHeight));
GetSrcRect; //lädt in SrcRect den aktuellen Auschnitt
TempGraphics := TGPGraphics.Create(TempBitmap);
TempGraphics.SetSmoothingMode(SmoothingModeNone);
TempGraphics.SetInterpolationMode(InterpolationModeBilinear); //schon alle möglichen durchprobiert
//FGPImage ist das Original mit 35MP
TempGraphics.DrawImage(FGPImage, DestRect, SrcRect.Left, SrcRect.Top, SrcRect.Right, SrcRect.Bottom, UnitPixel); //das dauert
Klar habe ich die Idee unächst den Auschnitt von einer kleineren Version zu nehmen. Ich möchte aber evaluieren, ob DrawImage tatsächlich so lange benötigt und welche Gründe es dafür gibt.

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat