Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#2

AW: VCL - Multi Res Icon innerhalb der Applikation anzeigen

  Alt 19. Sep 2019, 10:31
Eine ImageList hat zwingend immer nur eine Auflösung. Das gibt die Windows-API so vor, wenn am Ende für die Windows Controls halt ein HIMAGELIST Handle benötigt wird.

Seit Rio gibt es aber die Kombination aus TImageCollection und TVirtualImageList. Dabei werden in der TImageCollection unterschiedliche Auflösungen pro Icon hinterlegt und die TVirtualImageList holt sich immer die zu ihrer Größe passenden.

Natürlich kannst du dir auch direkt aus der TImageCollection ein Icon in der gewünschten Größe holen (GetBitmap). Das wird dann sogar noch passend skaliert, falls es in der Größe nicht vorliegt.

Du kannst also deine bisherige ImageList durch eine TVirtualImageList ersetzen. Die verbindest du mit einer TImageCollection, in der du deine Bildchen ablegst. Die TVirtualImageList hat auch noch den Vorteil, daß sie automatisch auf DPI-Änderungen des Owner-Forms reagiert, wenn die Anwendung denn dafür empfänglich ist. Das geht natürlich nur, wenn die TVirtualImageList auf einem Form liegt. Die TImageCollection kann aber auch auf einem Datenmodul untergebracht sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat