![]() |
VirtualImageList ActionList in der IDE sehr Langsam
Delphi Alexandria 11.2 Patch 1
Auf einem Form ImageCollection VirtualImageList ActionList alle miteinander verbunden in der ImageCollection sind ca. 150 Bilder 64x64 Pixel als Png Die VirtualImageList steht auf 32x32 Pixel bei 96DPI Zur Laufzeit ist alles Normal/OK Wenn man in der IDE die Actionlist öffnet, dauert das ca5-10Sec Auch wenn man in der Actionlist von einer zur anderen Category wechselt dauert es.. ActionList ohne VirtualImageList läuft wieder normal, aber da hat man keine Icon Vorschau. Für uns keine Lösung wenn man da oft dran muss. Mit der alten Imagelist wird die IDE nicht verzögert Hat jemand ähnliches Festgestellt und eine Lösung? |
AW: VirtualImageList ActionList in der IDE sehr Langsam
Es geht vermutlich flotter wenn die ImageCollection zu jedem der Bilder auch die 32x32 Version enthält...
|
AW: VirtualImageList ActionList in der IDE sehr Langsam
Ja, das dürfte einiges ausmachen und wenn man in dem Formular mit der ActionList
nicht alle Images brauchen sollte die VirtualImageList dort nicht automatisch befüllen lassen, sondern nur die reinnehmen, die man auch braucht. |
AW: VirtualImageList ActionList in der IDE sehr Langsam
Wenn man nur wenige reinnimmt ist es schneller, das ist aber keine Option.
Ich habe es jetzt zuerst mal so gelöst, das ich eine 2. alte Imagelist hinzugefügt habe (z.B. 24x24 Pixel) Diese ist nur mit der ActionList verknüpft. Die wird ja nur in der IDE benötigt/angezeigt. An allen anderen stellen ist die neue VirtualImagelist verknüpft. So bleibt die IDE schnell und das Programm sieht schön aus Die alte TImageList dann ColorDepth = cd32Bit DrawingStyle = dsTransparent Height = 24 Masked = False Width = 24 und in einem Rutsch die gleichen 64x64 PNG´s da rein Es müssen nur 32Bit PNG´s sein damit der Hintergrund nicht Schwarz angezeigt wird |
AW: VirtualImageList ActionList in der IDE sehr Langsam
Hast du auch mal probiert, was passiert wenn du in der Image Collection gleich 24x24 PNGs mit ablegst?
|
AW: VirtualImageList ActionList in der IDE sehr Langsam
An den Bildern in der Collection liegt es nicht,
mit diesem Code kann man Testweise das befüllen der TVirtualImageList zur Laufzeit mit verschiedenen Größen beschleunigen (Faktor 2), ganz einfach indem das Fertig Skalierte Bild der Collection hinzugefügt wird. Wenn man jetzt auch noch ganz viele Forms hat, gibt es noch andere Probleme, weil sehr viel Arbeitsspeicher verbraucht wird. Ich habe das schon gelöst, dafür mache ich aber einen neuen Thread auf. ... if not (csDesigning in ComponentState) then begin ImageCollectionSourceItem := Images[AIndex].SourceImages.Add; ImageCollectionSourceItem.Image := BufferImage; end; ... Vcl.ImageCollection.pas Zeile 589
Delphi-Quellcode:
function TImageCollection.GetBitmap(AIndex: Integer; AWidth, AHeight: Integer): TBitmap; var SourceImage: TWICImage; BufferImage: TWICImage; ImageCollectionSourceItem: TImageCollectionSourceItem; begin Result := nil; if (AIndex < 0) or (AIndex > FImages.Count - 1) then Exit; SourceImage := GetSourceImage(AIndex, AWidth, AHeight); if SourceImage = nil then Exit; if Assigned(FOnGetBitmap) then FOnGetBitmap(SourceImage, AWidth, AHeight, Result) else begin Result := TBitmap.Create; if not TStyleManager.ActiveStyle.Enabled then begin Result.PixelFormat := pf32bit; Result.Canvas.Brush.Color := clBtnFace; Result.SetSize(AWidth, AHeight); Result.Canvas.StretchDraw(Rect(0, 0, AWidth, AHeight), SourceImage); end else if (SourceImage.Width = AWidth) and (SourceImage.Height = AHeight) then Result.Assign(SourceImage) else begin BufferImage := GetScaledImage(SourceImage, AWidth, AHeight); if not (csDesigning in ComponentState) then begin ImageCollectionSourceItem := Images[AIndex].SourceImages.Add; ImageCollectionSourceItem.Image := BufferImage; end; try Result.Assign(BufferImage); finally BufferImage.Free; end; end; if Result.PixelFormat = pf32bit then Result.AlphaFormat := afIgnored; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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-2025 by Thomas Breitkreuz