Hallo, ich schreibe gerade eine Funktion, die die Farbe berechnet, die sich ergbit wenn man zwei Farben übereinanderlegt. Die Farben haben jeweils 4 Kanäle: für Rot, Grün, Blau und Alpha (Transparenz).
Die Variablen sind Doubles und enthalten Werte von 0 (0%) bis 1 (100%).
So sehen meine Berechnungen bis jetzt aus:
Quelltext
1: 2: 3: 4: 5: 6:
| Ergebnis.R := (1-Vordergrund.A)*Hintergrund.R + Vordergrund.A*Vordergrund.R; Ergebnis.G := (1-Vordergrund.A)*Hintergrund.G + Vordergrund.A*Vordergrund.G; Ergebnis.B := (1-Vordergrund.A)*Hintergrund.B + Vordergrund.A*Vordergrund.B; if Hintergrund.A>Vordergrund.A then Ergebnis.A := Hintergrund.A + Vordergrund.A*(1-Hintergrund.A) else Ergebnis.A := Vordergrund.A + Hintergrund.A*(1-Vordergrund.A); |
Eigentlich bekomme ich damit akzeptable Ergebnisse, allerdings stimmen sie mit den Ergebnissen von anderen Grafikprogrammen nicht ganz überein.
Wisst ihr wo ich vielleicht ein Fehler gemacht habe?
Ich würde mich sehr über Antworten freuen,
the_titan
p.s. Ich weiß, bei der Frage geht es weniger um Delphi, als um die Berechnung an sich, aber ich wäre trotzdem sehr dankbar über eure Hilfe.