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;