Es geht hier aber nicht ums Dithering, sondern um die
ADDITIVE FARBSYNTHESE!
und die beruht, wie der name schon sagt, darauf, dass zwei farben addiert werden.
und das ginge ja einfach so:
Delphi-Quellcode:
function AddColors(color1,color2: tcolor): TColor;
var r1, g1, b1,
r2, g2, b2: byte
r3, g3, b3: integer;
begin
// falls es sich um eine Windows-Standartfarbe wie z.b clBtnface handelt:
color1 := colortorgb(color1);
color2 := colortorgb(color2);
// zerlegen von Farbe 1
r1 := getrvalue(color1);
// ROT
g1 := getgvalue(color1);
// GRÜN
b1 := getbvalue(color1);
// BLAU
// zerlegen von Farbe 2
r2 := getrvalue(color2);
// ROT
g2 := getgvalue(color2);
// GRÜN
b2 := getbvalue(color1);
// BLAU
// addieren
r3 := r1+r2;
if r3 > 255
then r := 255;
g3 := g1+g2;
if g3 > 255
then g := 255;
b3 := b1+b2;
if b3 > 255
then b := 255;
// farbwerte zusammensetzen
result :=
rgb(r3,g3,b3);
end;
(Zugegebenermaßen nicht gerade optimiert)
Aber das geht mit der additiven Farbmischung nciht:
weis+grün = sehr helles grün <-- wäre weiß
schwarz+grün=grün <-- stimmt
schwarz+weis=weis <-- stimmt