Ok, das sieht gut aus. Aber weil ich auch gerade nebenher gebastelt hab (natürlich zeitlich total versagt
) poste ich auch mein Ergebnis, dass Deinen angebotenen Funktionsrumpf als Vorlage hatte:
Delphi-Quellcode:
type
TARGB = packed record
A,R,G,B : Byte;
end;
function MixColor(ARGB : TARGB; Color : TColor): TColor;
var
R, G, B : Byte;
begin
R := Color and $FF;
G := (Color shr 8) and $FF;
B := (Color shr 16) and $FF;
R := ((ARGB.R * ARGB.A) + (R * ($FF - ARGB.A))) div $FF;
G := ((ARGB.G * ARGB.A) + (G * ($FF - ARGB.A))) div $FF;
B := ((ARGB.B * ARGB.A) + (B * ($FF - ARGB.A))) div $FF;
Result := R + (G shl 8) + (B shl 16);
end;
Zumindest bei der Berechnung/Mixen scheint es richtig (war da garnicht so sicher)