Einzelnen Beitrag anzeigen

thomas2009
(Gast)

n/a Beiträge
 
#1

Helligkeit einer Bitmap

  Alt 30. Mär 2011, 22:13
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;
  Mit Zitat antworten Zitat