ich möchte gerne ein Bild (JPG oder PNG) mit einer anderen Farbe mischen. Hintergrund ist, dass wenn der User mit der Maus über ein Bild hovert, dieses abgedunkelt wird (wenn möglich mit Animation, Überfaden). Mein Code bisher sieht so aus:
Code: Alles auswählen
function TForm1.MixByteColor(Val1, Val2: byte; blend: real): byte;
begin
result:=Round(Val1*(1-blend)+Val2*blend);
end;
procedure TForm1.Button1Click(Sender: TObject);
var x, y, byte: integer;
blend: real=0.8;
p: ^TPixArray;
byteCol: TByteColor;
begin
try
Image1.Picture.LoadFromFile('pics/offers/album.jpg');
{ Set Color 2 }
byteCol[1]:=0; // b
byteCol[2]:=0; // g
byteCol[3]:=0; // r
for y:=Image1.Height-1 downto 0 do
begin
p:=Image1.Picture.Bitmap.ScanLine[y];
if y>Image1.Height*0.15 then
blend:=0.8
else if blend<0 then
blend:=0
else if blend<>0 then
blend:=blend-(blend/(y+1));
for x:=0 to Image1.Width-1 do
begin
for byte:=1 to 3 do
begin
p^[byte]:=MixByteColor(p^[byte], byteCol[byte], blend);
end;
Inc(p);
end;
end;
finally
end;
end;
Es passiert auch etwas, jedoch sieht das Ergebnis nicht wie gewünscht aus (siehe Anhang). Eigentlich sollte der Farbverlauf schwarz sein (nicht grau) und über das gesamte Bild gehen.
Weiß jemand ne Lösung dafür?
Grüße
ConcAPPtLab