Einzelnen Beitrag anzeigen

David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#1

Farbton eines Bildes ändern

  Alt 7. Dez 2010, 15:44
Hi,

ich möchte ein Bild (png), mit einer TColor, einfärben.

Unten ist ein Beispiel: das Ausgangsbild ist rot und soll Grün werden wenn ich z.B.: clLime auswähle.

Ich benutze die zwei Funktionen um ein Graustufenbild zu erzeugen. Ich dachte vielleicht kann man das um die Farbe erweitern.:

Delphi-Quellcode:
function ConvertColor(AColor: TColor): TColor;
var
  PixelColor, NewColor: Integer;
begin
  if AColor <> clFuchsia then
  begin
    PixelColor := ColorToRGB(AColor);
    NewColor := Round((((PixelColor shr 16) + ((PixelColor shr 8) and $00FF) + (PixelColor and $0000FF)) div 3)) div 2 + 96;
    Result := RGB(NewColor, NewColor, NewColor);
  end
  else
    Result := clBtnFace;
end;

procedure ConvertColors(ABitmap: Graphics.TBitmap);
var
  x, y: Integer;
begin
  for x := 0 to ABitmap.Width - 1 do
    for y := 0 to ABitmap.Height - 1 do
    begin
      ABitmap.Canvas.Pixels[x, y] := ConvertColor(ABitmap.Canvas.Pixels[x, y]);
    end;
end;
Angehängte Grafiken
  
  Mit Zitat antworten Zitat