hmmm, mit der Berechnung wird dat nicht's Richtiges:
Delphi-Quellcode:
R := (C and $07) * 36.428571;
G := ((C shr 3) and $07) * 36.428571;
B := ((C shr 5) and $03) * 85;
Also bleibt dann noch der einfache Weg über 'ne Tabelle.
Entwerde du nimmst alle 256 Farbwerte in Eine auf, oder du erstellst nur kleine Tabellen, womit du dann jeden Farbwert inzeln berechnen kannst:
Delphi-Quellcode:
T3: Array[0..7] of Byte = (0, 36, ..., 219, 255);
T2: Array[0..3] of Byte = (0, 85, 170, 255);
R := T3[C and $07];
G := T3[(C shr 3) and $07];
B := T2[(C shr 5) and $03];
C24 := T3[C8 and $07]
or (T3[(C8 shr 3) and $07] shl 8)
or (T2[(C8 shr 5) and $03] shl 16);
[add]
@Kroko: andersrum gehts auch ... dann wird's aber net mehr ganz Schwarz ^^
Delphi-Quellcode:
Result :=
Rgb ((((AColor + 1)
and $07) - 1)
shl 5,
(((AColor + 1)
and $38) - 1)
shl 2,
((AColor + 1)
and $C0) - 1);