Zitat von
shmia:
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
Naja ich glaube nicht das das richtig ist.
Delphi-Quellcode:
// RRRRRGGGGGGBBBBB
// 00000000RRRRR000 => 8 nach rechts
Result.rgbRed := (AColor and $F800) shr 8;
Wenn RRRRR = 11111 dann wäre der Rot-Farbanteil 100%. 31/31
RRRRR000
11111000. das wäre 248/255 (97,25%)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."