Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #2  
Старый 16.12.2011, 10:29
medvedoff medvedoff вне форума
Прохожий
 
Регистрация: 27.01.2011
Сообщения: 10
Репутация: 10
По умолчанию

Переписал, оказывается не все так сложно как показалось
Не уверен что код оптимизирован, однако GetTickCount возвращает "15" для bmp 640*480 24bpp, SkyLine не далеко ушел - "16", что не может не радовать. Кстати, фильтр интересный довольно-таки, что-то вроде монохромного дизеринга. Код под FastDib:
Код:
procedure Mono(Bmp:TFastDIB;Split:Integer);
var
  x,y,k: Integer;
  Lin1: PLine24;
  pc: PFColor;
begin
  for y:=0 to Bmp.AbsHeight-1 do
  begin
    Lin1:=Bmp.Scanlines[y];
    for x:=0 to Bmp.Width-1 do
    begin
      k:=(76*Lin1[x].r+150*lin1[x].g+30*lin1[x].b) div 256;
      if k < Split then k:=0 else k:=255;
      Lin1[x].r:=k;
      Lin1[x].g:=k;
      Lin1[x].b:=k;
    end;
  end;
end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025