Entwickler-Ecke

Multimedia / Grafik - Alpha Blending


the_titan - Do 27.05.10 00:03
Titel: Alpha Blending
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.


Kha - Do 27.05.10 00:26

user profile iconthe_titan hat folgendes geschrieben Zum zitierten Posting springen:
enthalten Werte von 0 (0%) und 1 (100%).
Und dazwischen nichts :shock: ?
*scnr*

Ich denke, du suchst die zwei letzten Formeln hier: http://en.wikipedia.org/wiki/Alpha_compositing#Description


the_titan - Do 27.05.10 01:44

achso, doch natürlich... ich meinte von 0 bis 1