Hallo AW
du schreibst, dass du die Luminanz und nicht den Grauwert verwenden willst.
Vergleiche aber
https://de.wikipedia.org/wiki/Luminanz
und
https://de.wikipedia.org/wiki/Grauwert
Deine in #24 gepostete Funktion
function TSkinEngine.Rgb2Gray(RGBValue: COLORREF): COLORREF; stdcall;
liefert dir also die von dir gesuchte Luminanz wie Schokohase in #27 zeigt.
Deine ursprüngliche Funktion hat auch extrem helle Farben wie
RGB( 250 253 241 ) als sehr dunkel (0) bewertet.
Du hast in #24 eine Grafik gepostet, schwarz wird dort durch deine Funktion unsichtbar. Das ist doch genau das, was du von deiner Funktion erwartest.
Wenn du bereits vorhandene Icons korrekt darstellen willst, dann bringt dein Weg über "sehr dunkle Pixels => unsichtbar setzen" natürlich nicht den gewollten Effekt.
Gruss