Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Helligkeit einer Bitmap (https://www.delphipraxis.net/159504-helligkeit-einer-bitmap.html)

thomas2009 30. Mär 2011 21:13

Helligkeit einer Bitmap
 
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;

lbccaleb 30. Mär 2011 21:22

AW: Helligkeit einer Bitmap
 
Wie viele Beiträge erstellst du denn die Minute?? :lol:

Du könntest das Bitmap vorher in einer Variable speichern, und dann nochmal die Funktion auf das neue Bild ausführen, dann sollte es wieder gehen. Weiß aber nicht ob ich jetzt dein Problem hier richtig verstanden hab, die Beschreibung selbiges ist auch sehr kurz gehalten:shock:

Desweiteren brauchst du nicht erst eine Variable TBitmap erstellen, und auf dieser die Funktion anwenden, sondern kannst auch gleich die bereits in TPicture gespeicherte TBitmap Version benutzen.

Medium 30. Mär 2011 23:13

AW: Helligkeit einer Bitmap
 
Die Problemlösung ist ganz einfach: Versuche endlich mal zu verstehen was du kopierst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz