Hi
ich versuche mit dieser Funktion die Helligkeit von dem Bild zu ändern
Aber beim Klicken auf Button1 funktioniert nur einmal !
Delphi-Quellcode:
procedure Tone(Bit: TBitmap; r, g, b: Integer);
type
PixArray = array[1..4] of Byte;
var
p: ^PixArray;
h, w: Integer;
begin
Bit.Pixelformat := pf32bit; // <-----------------------
for h := 0 to Bit.Height - 1 do
begin
p := Bit.ScanLine[h];
for w := 0 to Bit.Width - 1 do
begin
if (round(p^[1] * (1 + b / 100)) < 0) then p^[1] := 0 else
if (round(p^[1] * (1 + b / 100)) > 255) then p^[1] := 255
else p^[1] := round(p^[1] * (1 + b / 100));
if (round(p^[2] * (1 + g / 100)) < 0) then p^[2] := 0 else
if (round(p^[2] * (1 + g / 100)) > 255) then p^[2] := 255
else p^[2] := round(p^[2] * (1 + g / 100));
if (round(p^[3] * (1 + r / 100)) < 0) then p^[3] := 0 else
if (round(p^[3] * (1 + r / 100)) > 255) then p^[3] := 255
else p^[3] := round(p^[3] * (1 + r / 100));
p^[4]:=0; // <----------------------------
Inc(p);
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//Tone(Image1.Picture.Bitmap,0,0,0)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Tone(Image1.Picture.Bitmap,
Scrollbar1.Position,
Scrollbar2.Position,
Scrollbar3.Position)
end;
Muss ich die Änderung auf eine Kopie von Bitmap machen ?
z.B.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp:=TBitmap.Create;
bmp.Assign(Image1.Picture.Bitmap);
Tone(bmp,
Scrollbar1.Position,
Scrollbar2.Position,
Scrollbar3.Position)
Image2.Picture.Bitmap.assign(bmp);
bmp.free;
end;