AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) 16x16 Icons bei HighDPI bzw. Skalierung?
Thema durchsuchen
Ansicht
Themen-Optionen

16x16 Icons bei HighDPI bzw. Skalierung?

Ein Thema von MicMic · begonnen am 11. Jul 2018 · letzter Beitrag vom 14. Jul 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: 16x16 Icons bei HighDPI bzw. Skalierung?

  Alt 12. Jul 2018, 15:50
Ich muss eingestehen das was Du da machst habe ich keine Ahnung von. Wenn ich System Icons brauche, dann lade ich die, aber direkt von dll.
LoadImage() schau doch einfach mal in die Hilfe, theoretisch alles was ein Handle haben kann könnte damit aufgerufen werden, obs in Deinem Speziellen Fall genauso ist, einfach mal probieren.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: 16x16 Icons bei HighDPI bzw. Skalierung?

  Alt 12. Jul 2018, 21:53
Ich muss eingestehen das was Du da machst habe ich keine Ahnung von. Wenn ich System Icons brauche, dann lade ich die, aber direkt von dll.
LoadImage() schau doch einfach mal in die Hilfe, theoretisch alles was ein Handle haben kann könnte damit aufgerufen werden, obs in Deinem Speziellen Fall genauso ist, einfach mal probieren.
Mit dem obigen Code wird nur die System Icon Liste zugewiesen (und halt keine 16x16er), später per Index wird dann ein Icon daraus geladen.

16x16/32x32 hin oder her... ich habe jetzt eine bessere Skalierungsfunktion.
Nicht mehr mit "DrawIconEx", sondern mit StretchBlt. So muss ich auch nicht mehr ".GetIcon" von TImageList nutzen (langsam). Also ".Draw" (schneller) von der TImageList in ein Bitmap-Canvas und mit "StretchBlt" zum Ziel-Canvas. Was mir gut gefällt ist der Wert "HALFTONE" für "SetStretchBltMode". Die Skalierung schaut um einiges besser aus. Der Wert berücksichtigt die Hintergrundfarbe des Ziel-Canvas und malt um das Icon dunklere Ränder, passend zur Hintergrundfarbe. HALFTONE nochmal halbiert wäre aber besser... die dunklen Ränder sind mir dann ein tick zu dunkel. Dies kann man wohl nicht beeinflussen.

Michael
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: 16x16 Icons bei HighDPI bzw. Skalierung?

  Alt 12. Jul 2018, 21:56
nur Interesse halber..
Zitat:
Mit dem obigen Code wird nur die System Icon Liste zugewiesen (und halt keine 16x16er), später per Index wird dann ein Icon daraus geladen.
Gibt es überhaupt das 16x16 Icon in deiner Ressource ?
Ich glaube unter Win10 wurden diese entfernt, bin aber nicht sicher.
Nein nur verschiedene Farben. 16 und 256 wurden entfernt.
https://www.delphipraxis.net/attachm...ixer-mmres.jpg
https://www.delphipraxis.net/attachm...ixer-08.05.png

Wenn nicht nun dann schlägt SHIL_SMALL für diese Größe fehl.

gruss

Geändert von EWeiss (12. Jul 2018 um 22:28 Uhr)
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: 16x16 Icons bei HighDPI bzw. Skalierung?

  Alt 14. Jul 2018, 07:53
@EWeiss... wie ich schrieb, mit "Hochauflösung aktivieren" werden es 32x32. Sonst 16x16. Also die sind schon da.
Im übrigen ein erwartendes 32x32 wird dann 64x64. (SHGetFileInfo oder SHGetImageLis)
Das macht ja alles Sinn, wenn höhere Auflösungen genutzt werden. Skalierungsfaktor 100% oder mehr, bei allen Auflösungen (z.B. auch 800x600) liefern stets 32x32. Die Sache wird erst wieder normal (SHIL_SMALL/SHGFI_SMALLICON=16x16 Icons) wenn "Hochauflösung aktivieren" in den Projektoptionen ausgeschaltet ist.

Zum Glück geht's nun gut mit dem StretchBlt. Damit kann ich leben und der Endbenutzer dann auch

Michael
  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 13:06 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