Größe von ListView-Images
-
Moin!
Ich will hier eine ImageList für ein ListView in LVS_REPORT erstellen. Aber wie groß sind denn üblicherweise die Images? Ich dachte, ich nehme hier einfach SM_CxySMICON. Aber das scheint mir zu groß zu sein (einige System-Icon sind damit reichlich "fransig"). Ich nehme jetzt SM_CxyMENUCHECK, das sieht besser aus. Aber ist das auch richtig? Wie bestimmt Ihr die Größe?
-
Eigentlich fix: 16x16
Smallicon wäre noch eine Variante.
-
Fix geht nicht wegen dpiAware = true
Smallicon hatte ich, wie gesagt, verwendet. Das ist aber offensichtlich nicht ganz passend, wenn das ListView den DEFAULT_GUI_FONT verwendet. So lade ich das Icon:
SIZE siz; siz.cx = GetSystemMetrics(SM_CXSMICON); siz.cy = GetSystemMetrics(SM_CYSMICON); LoadImage(NULL, MAKEINTRESOURCE(OIC_ERROR), IMAGE_ICON, siz.cx, siz.cy, LR_DEFAULTCOLOR | LR_SHARED);
Schau Dir an, wie schrecklich das im ListView aussieht (hier: Win 7). Deswegen bin ich jetzt bei SM_CxyMENUCHECK (15x15 bei 96 dpi) gelandet, das sieht wesentlich besser aus.
Aber wenn ich Dich richtig verstehe, ist 16x16 schon richtig. Lediglich System-Images funktionieren dann nicht. Machen die das absichtlich, damit auch wirklich jeder seine eigenen Grafiken mitbringt, oder wieso ist das so?
-
Ich habe nochmal nachgesehen. Wir verwenden eine Bitmaphöhe von 15.
Also ist das Raster genaugenommen 15x16.
-
Ah, danke fürs nachsehen! Dann bleibe ich erst einmal dabei, dass ich mir beide Werte hole und dann den jeweils kleineren verwende. Das schaut soweit ganz OK aus und passt scheinbar auch bei den anderen DPIs.