Cześć!

Słuchajcie mam problem, cały dzień siedze nad tym i nie mogę nic wymyśleć:
Mam bitmapę i chciałbym uzyskać efekt zaciemniania każdego piksela, który ma kolor czerwony. Próbowałem ScanLines i eksperymentowałem z funkcją:

Function TLedtable.ApplyDark(Color:TColor; HowMuch:shortint):TColor;
Var r,g,b:Byte;
Begin
	Color:=ColorToRGB(Color);
	r:=GetRValue(Color);
	g:=GetGValue(Color);
	b:=GetBValue(Color);
	if r>HowMuch then r:=r-HowMuch else r:=0;
	if g>HowMuch then g:=g-HowMuch else g:=0;
	if b>HowMuch then b:=b-HowMuch else b:=0;
	result:=RGB(r,g,b);
End;

Niestety trwa to zbyt długo, ponieważ tutaj zakres ma od 0 do 127 i za każdą pętlą zamieniam tutaj te odcienie. Może da rade to szybciej zrobić podmieniając palety? Czy ktoś jest może mnie tutaj naprowadzić na dobrą drogę? Może ja źle używam ScanLine?

(Rozmiar bitmapy: 300x200)

pozdrawiam [browar]