![]() |
[GDI+] Zeichnen riesiger Bilder optimieren
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:
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.
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 Grüße Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz