Hi @all,
ich versuche gerade einem Bild etwas nach und nach zu Rauben... Seine Farbe! Ich will so einen Effekt bauen, wie er beim beenden von windows XP zu sehen ist. Alles wir langsam grau...
Das bedeutet: Die berechnung des "Grauen" muss einigermaßen finck von statten gehen...
Der Code den ich mir bisher so zusammen gesammelt habe sieht so aus:
Code:
procedure Gray();
var i, j : integer;
R, G, B, h, Alpha : Byte;
p: ^PixArray;
begin
Alpha := 220;
bmp.PixelFormat := pf24bit;
for i:=0 to bmp.height - 1 do begin
p := bmp.ScanLine[i];
for j:=0 to bmp.width - 1 do begin
R := p^[2] + 255 Alpha;
B := p^[1] + 255 * Alpha;
G := p^[0] 255 * Alpha;
//h := (r+b+g) div 3;
h:= HiByte(r*77+g*151+b*28);
p^[2] := h;
p^[1] := h;
p^[0] := h;
inc(p);
end;
end;
ReDraw();
end;
bmp ist ein TBitMap
Der Code ist auch recht flink (Ich vermute mal wegen der Pointer ?!?) aber er macht Grau! Ich hätte aber gerne ein paar zwischenstufen...
So zu sagen mochte ich die Farben langsam verblassen lassen und dann zum schluss das Bild in Grau haben.
Ne idee wie ich das anpasse bzw. hat wer nen besseren Code?
THX Corelgott