Habe das gerade in meinem Dateienchaos
gefunden:
Delphi-Quellcode:
maxP := ViewImage.Bitmap.Width * ViewImage.Bitmap.Height - 1;
Pdst := @ViewImage.Bitmap.Bits[0];
Psrc1 := @oldImage.Bits[0];
Psrc2 := @newImage.Bits[0];
for i := 0 to maxP do begin
Pdst^ := ((((Psrc1^ and $00FF0000) shr 16) * (255 - blendfact)) shl 8 + (((Psrc2^ and $00FF0000) shr 16) * (blendfact)) shl 8) and $00FF0000
or ((((Psrc1^ and $0000FF00) shr 8 ) * (255 - blendfact)) shl 0 + (((Psrc2^ and $0000FF00) shr 8 ) * (blendfact)) shl 0) and $0000FF00
or ((((Psrc1^ and $000000FF) shr 0 ) * (255 - blendfact)) shr 8 + (((Psrc2^ and $000000FF) shr 0 ) * (blendfact)) shr 8) and $000000FF;
Inc(Pdst);
Inc(Psrc1);
Inc(Psrc2);
end;
Pdst, Psrc1 und Psrc2 sind vom Typ PColor32; maxP vom Typ Cardinal (schneller als Integer)
ViewImage, oldImage, newImage sind TBitmap32s
Hoffe, das ist etwas hilfreich...
LG, Gerhard
Edit: Achja, der Code war zum Überblenden von oldImage auf newImage; das Bild wird eben immer in ViewImage ausgegeben. blendfact geht von 0 bis 255.