Einzelnen Beitrag anzeigen

Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#23

Re: Ein Bild mit einer Farbe multiplizieren?

  Alt 25. Jan 2008, 12:53
fall noch jemand eine copy & paste lösung braucht:

Delphi-Quellcode:
type
  TRGB = record
    Blue: Byte;
    Green: Byte;
    Red: Byte;
  end;

  PRGB = ^TRGB;

procedure Multi(src: TBitmap; r, g, b: Integer; Intensiv: Byte);
var
  P: PRGB;
  y, x: integer;
begin
  for y:=0 to src.Height-1 do
    begin
      P:=src.scanline[y];
      for x:=0 to src.Width-1 do
        begin
          P.Blue:=Round( ((P.Blue * (255 - Intensiv) + P.Blue * b * Intensiv / 255) / 255) );
          P.Green:=Round( ((P.Green * (255 - Intensiv) + P.Green * g * Intensiv / 255) / 255) );
          P.Red:=Round( ((P.Red * (255 - Intensiv) + P.Red * r * Intensiv / 255) / 255) );
          Inc(P);
        end;
    end;
end;
anmerkung: muss man nicht als funktion machen oder das bitmap als var parameter übergeben, da scanline ja speicheradressen zurückliefert und diese dann auch direkt im speicher geändert werden.
  Mit Zitat antworten Zitat