Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 482

/ вопрос открыт /

Здравствуйте уважаемые эксперты!
Пожскажите,пожалуйста,как в программе-графическом
редакторе создать фильтр размытия в движении по вертикали с заданным размером сдвига. Я представляю себе,как сделать просто фильтр размытия(

Приложение:
  1.  
  2. procedure TFmFilter.BitBtn1Click(Sender: TObject);
  3. var
  4.  
  5. L,k,h,w : integer;
  6.  
  7.  
  8. nR,nG,nB : integer;
  9. sr,sg,sb : integer;
  10. MasR, MasG, MasB : array [1..10] of integer;
  11. Begin
  12. FilterBuffer:=TBitmap.Create;
  13.  
  14. Undo_Buffer[Current_Fm].Width:=Fm_pic[Current_Fm].pic.Picture.Bitmap.Width;
  15. Undo_Buffer[Current_Fm].Height:=Fm_pic[Current_Fm].pic.Picture.Bitmap.Height;
  16. h:=Undo_Buffer[Current_Fm].Height;
  17. w:=Undo_Buffer[Current_Fm].Width;
  18. Undo_Buffer[Current_Fm].Canvas.CopyRect(Rect(0,0,w,h),
  19. Fm_pic[Current_Fm].pic.Canvas,Rect(0,0,w,h));
  20.  
  21. L:=SpinEdit1.Value;
  22. For s:=1 to l do begin
  23. FilterBuffer.Width:=Fm_pic[Current_Fm].pic.Picture.Bitmap.Width;
  24. FilterBuffer.Height:=Fm_pic[Current_Fm].pic.Picture.Bitmap.Height;
  25. FilterBuffer.Canvas.CopyRect(Rect(0,0,w,h),
  26. Fm_pic[Current_Fm].pic.Canvas,Rect(0,0,w,h));
  27.  
  28. for m:=1 to h do
  29. for n:=1 to w-1 do
  30. begin
  31. t:=1;
  32.  
  33. for i:=1 to 3 do
  34. for j:=1 to 3 do
  35. if ((n-1+i)>=1)and((m-1+j)>=1)and((n-1+i)<=w)and((m-1+j)<=h) then
  36. begin
  37.  
  38. c:=FilterBuffer.Canvas.Pixels[n-2+i,m-2+j];
  39.  
  40. r:= (c mod $00000100);
  41. g:= ((c mod $00010000) div $00000100);
  42. b:= ((c mod $01000000) div $00010000);
  43. MasR[t]:=r;
  44. MasG[t]:=g;
  45. MasB[t]:=b;
  46. t:=t+1;
  47. end;
  48. sr:=0;
  49. sg:=0;
  50. sb:=0;
  51. for i:=1 to t-1 do
  52. begin
  53. sR:=sR+MasR[i];
  54. sG:=sG+MasG[i];
  55. sB:=sB+MasB[i];
  56. end;
  57.  
  58.  
  59. n_col:=$00010000*round(sB/(t-1))+$00000100*round(sG/(t-1))+round(sR/(t-1));
  60.  
  61. Fm_Pic[Current_Fm].Pic.Canvas.Pixels[n,m+1]:=n_col;
  62.  
  63. end;
  64. end;
  65.  


Вирра Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Вирра (статус: Посетитель)
Вопрос отправлен: 4 декабря 2009, 02:30
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:36
Выполнено за 0.03 сек.