Chciałbym przedstawić sposób na zabarwienie obrazka jednym kolorem. Procedura najpierw oblicza wartość nasycenia wybranego koloru, a następnie usuwa dwa pozostałe. Ze względu na powolne działanie, procedura sprawdza się bardzo dobrze jedynie przy obrazkach niewielkich rozmiarów.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
procedure Zabarwianie(C:TCanvas); var x, y: integer; Kolor: LongInt; R, G, B, Nasycenie: Byte; begin with C do for x:= ClipRect.Left to ClipRect.Right do for y:= ClipRect.Top to ClipRect.bottom do begin Kolor:=ColorToRGB(Pixels[x,Y]); R := GetRValue(Kolor); G := GetGValue(Kolor); B := GetBValue(Kolor); Nasycenie := Trunc(B*0.11+G*0.59+R*0.3); Pixels[x,Y]:=RGB(Nasycenie,0,0); end; end; |
W tej procedurze zabarwiamy rysunek na czerwony, aby wykonać to dla barwy zielonej lub niebieskiej wystarczy zmienić Pixels[x,Y]:=RGB(Nasycenie,0,0); na :
zielony : Pixels[x,Y]:=RGB(0,Nasycenie,0);
niebieski : Pixels[x,Y]:=RGB(0,0,Nasycenie);
Autor: NakielNakiel