Вот код процедуры относительно медленно но вроде как дубово
Код:
function GetTrueGrey(inParam: Tcolor): integer;
var
r,g,b: integer;
begin
for r:=1 to 255 do
for g:=1 to 255 do
for b:=1 to 255 do
if (RGB(r,g,b)=InParam) and (r=g) and (r=b) then result:=0
else result:=-1;
end;
и в коде указываешь
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: integer;
tmp: Tcolor;
begin
tmp:=Image1.Canvas.Pixels[0,0]; // или Image1.Canvas.Pixels[1,1]
for i:=0 to Image1.Picture.Width do
for j:=0 to Image1.Picture.Height do
if GetTrueGrey(Image1.Canvas.Pixels[i,j])=0 then
Image1.Canvas.Pixels[i,j]:=clWhite;
end;
Но лучше писать процедуру которая раскладывает по цветам. т.к. если у тебя будет рисунок с расширением 800х600 эта обработка займет кучу времени. 800*600*(255*255*255) операций