//Farbtiefe der beiden Pictures auf 32 bit setzen
Picture1.Bitmap.PixelFormat := pf32Bit;
Picture2.Bitmap.PixelFormat := pf32Bit;
//in einer Zählschleife Zeile für Zeile durchgehen
for y := 0
to Picture1.Bitmap.Height - 1
do
begin
//per ScanLine die Zeile auslesen
Line1 := Picture1.Bitmap.ScanLine[y];
Line2 := Picture2.Bitmap.ScanLine[y];
Line3 := Target.Bitmap.ScanLine[y];
//die ausgelesenen Zeilen von links nach rechts durchgehen
for x := 0
to Picture1.Bitmap.Width - 1
do
begin
//die Farbe des aktuellen Pixels von Picture1 berechnen
tempColor1 :=
RGB(Line1.rgbRed,Line1.rgbGreen,Line1.rgbBlue);
//die Farbe des aktuellen Pixels von Picture2 berechnen
tempColor2 :=
RGB(Line2.rgbRed,Line2.rgbGreen,Line2.rgbBlue);
//je nachdem, welches Bild oben ist, die Mischfarbe berechnen
if (PictureAboveID = 1)
then
tempColor3 := MixColor(tempColor1,tempColor2,AlphaBlendValue)
else
tempColor3 := MixColor(tempColor2,tempColor1,AlphaBlendValue);
//in den aktuellen Pixel des Ziel-Pictures die Mischfarbe schreiben
//wird durch die folgenden drei Anweisungen die neue Farbe geschrieben?
Line3.rgbBlue := GetBValue(tempColor3);
Line3.rgbGreen := GetGValue(tempColor3);
Line3.rgbRed := GetRValue(tempColor3);
//die drei Pointer inkrementieren, um zum nächsten Pixel zu gelangen
inc(Line1);
inc(Line2);
inc(Line3);
end;