Показать сообщение отдельно

  #2  
Старый 11.04.2010, 14:48
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

самый преметивный сопсоб: простым сравнение средней яркости. Тупой способ, но более менее норм выглядит и простой. Вот не оптимизированный вариант.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 x, y : integer;
 r, g, b : byte;
 c : dword;
begin
  Image1.Picture.LoadFromFile('d:\1.bmp');

  for y := 0 to Image1.Height-1 do
  begin
    for x := 0 to Image1.Width-1 do
    begin
      c := Image1.Canvas.Pixels[x,y];
      r := GetRValue(c);
      g := GetGValue(c);
      b := GetBValue(c);

      if (r + g + b) div 3 > 128 then
      begin
        Image1.Canvas.Pixels[x,y] := clWhite;
      end
      else
      begin
        Image1.Canvas.Pixels[x,y] := clBlack;
      end;
    end;
  end;
end;
 
Ответить с цитированием