Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сдвиг изображения [WinXP]


Виталя ©   (2008-06-18 15:37:00) 

Товарищи программисты,помогите пожалуйста реализовать фильтр offset фотошопа в делфи


Омлет   (2008-06-18 20:11:00) [1]

type
 TMoveStyle = (msAll, msBack);

procedure MoveBitmap(Src, Dest: TBitmap; Hor, Ver: Integer; Style: TMoveStyle; BackColor: TColor);
var x, y: Integer;
begin
 if (Hor = 0) and (Ver = 0) then Exit;
 Dest.Width := Src.Width;
 Dest.Height := Src.Height;
 Dest.PixelFormat := Src.PixelFormat;
 Dest.Transparent := False;

 if Style = msBack then
   with Dest.Canvas do begin
     Brush.Style := bsSolid;
     Brush.Color := BackColor;
     FillRect(Rect(0, 0, Dest.Width, Dest.Height));
   end;

 if Style = msAll then begin
   if Hor > 0 then x := Hor - Dest.Width
              else x := Dest.Width + Hor;
   if Ver > 0 then y := Ver - Dest.Height
              else y := Dest.Height + Ver;
   if (x <> 0) and (y <> 0) then Dest.Canvas.Draw(x, y, Src);
   Dest.Canvas.Draw(Hor, y, Src);
   Dest.Canvas.Draw(x, Ver, Src);
 end;

 Dest.Canvas.Draw(Hor, Ver, Src);
end;


Src - исходное изображение
Dest - результат
Hor, Ver - число пикселей, на которое будет смещение по горизонтали и вертикали
Style - тип фона: msBack - фон закрашивается цветом BackColor, msAll - смещение происходит с перелезанием конца в начало и низа вверх, либо наоборот.
Выдернуто из старющего проекта, поэтому немного нелогично :)


Омлет   (2008-06-18 19:56:00) [2]

Фильтр Offset (Сдвиг) - сдвигает выделенные области изображения по горизонтали или вертикали на точно заданное число пикселей.

Это самое простое, что можно запрограммировать в фильтрах для граф.редактора ))
Просто копировать нужную часть рисунка с помощью BitBlt или Canvas.CopyRect со смещением. Не вижу тут никаких сложностей в плане алгоритма.


MBo   (2008-06-18 17:01:00) [3]

что делает это фильтр (фотошопа не видел)


MBo   (2008-06-18 17:01:00) [4]

что делает это фильтр?
(фотошопа не видел)


Наверх

Титульная страница Поиск, карта сайта Написать письмо