Показать сообщение отдельно
  #9  
Старый 06.08.2008, 23:27
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Вот код процедуры относительно медленно но вроде как дубово

Код:
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) операций
Ответить с цитированием