Man man einfach mit "and" die relevanten Bits ausschneidet und dann gleich richtig shiftet,
braucht man nicht mehr multiplizieren:
Delphi-Quellcode:
function HighColorToTrueColor(AColor: Word): TRGBQuad;
begin
// RRRRRGGGGGGBBBBB
// 00000000RRRRR000 => 8 nach rechts
Result.rgbRed := (AColor and $F800) shr 8;
// RRRRRGGGGGGBBBBB
// 00000000GGGGGG00 => 3 nach rechts
Result.rgbGreen := (AColor and $07E0) shr 3;
// RRRRRGGGGGGBBBBB
// 00000000BBBBB000 => 3 nach links
Result.rgbBlue := (AColor and $001F) shl 3;
end;
PS: Bitte ausprobieren, ob das so richtig ist und dann in die Code-Library