AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VCL - Multi Res Icon innerhalb der Applikation anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

VCL - Multi Res Icon innerhalb der Applikation anzeigen

Ein Thema von Sherlock · begonnen am 19. Sep 2019 · letzter Beitrag vom 19. Sep 2019
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#1

VCL - Multi Res Icon innerhalb der Applikation anzeigen

  Alt 19. Sep 2019, 09:11
Ich habe eine ico-Datei, mit Icons in mehreren Auflösungen (16x16 bis 256x256) und möchte diese innerhalb der Applikation in einem TImage anzeigen, am besten das Icon, das am ehesten in das TImage passt (zB 128x128). Wie stelle ich das an? Im Moment bekomme ich nur das kleinste zu sehen.
Das Icon habe ich in eine Imageliste geladen. Offensichtlich ist das das Problem, denn in der VCL scheint die TImageList nur eine Auflösung zu können, also keine MultiResBitmaps wie es in FMX gibt. Und die TImageList ist mit Height und Width 16 eingestellt, das brauche ich aber, weil ich das eigentlich als TrayIcon verwenden will. Ins TImage lade ich das mit:
TrayIcon.Icons.GetIcon(0, StateImage.Picture.Icon) Da gibt es leider keine Möglichkeit die Größe anzugeben. Aufgrund von meinen Bestrebungen höhere oder auch niedrigere DPI unterstützen zu wollen, sollte es da aber schon eine Möglichkeit geben - abgesehen von der offensichtlichen und unflexiblen Lösung, mehrere Imagelisten für verschiedene Auflösungen mitzuführen...

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: VCL - Multi Res Icon innerhalb der Applikation anzeigen

  Alt 19. Sep 2019, 09: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
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: VCL - Multi Res Icon innerhalb der Applikation anzeigen

  Alt 19. Sep 2019, 09:41
Prima, Danke. Werde ich genau so machen.



Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz