• 0
krapotkin

Как добиться эффекта отражения?

Вопросы

требуется эффект отображения image относительно вертикальной оси

как можно этого достигнуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 ответов на этот вопрос

  • 0

Используем специальные методы:

TBimap.FlipHorizontal
TBimap.FlipVertical
TBimap.Rotate
TBitmapSurface.Mirror
TBitmapSurface.Flip
TBitmapSurface.Rotate90

Или получаем доступ к точкам изображения и меняем их расположение.

procedure FlipHorizontal(var ABitmap: TBitmap);
var
  Data: TBitmapData;
  X, Y: Integer;
  Pixel: TAlphaColor;
begin
  Assert(ABitmap <> nil);

  if ABitmap.Map(TMapAccess.ReadWrite, Data) then
    try
      for X := 0 to (Data.Width div 2) - 1 do
        for Y := 0 to Data.Height - 1 do
        begin
          Pixel := Data.GetPixel(X, Y);
          Data.SetPixel(X, Y, Data.GetPixel(Data.Width - X, Y));
          Data.SetPixel(Data.Width - X, Y, Pixel);
        end;
    finally
      ABitmap.Unmap(Data);
    end;
end;

Аналогично делается отражение относительно горизонтальной оси.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

спасибо. попробую

 

интересно, с учетом того, что у меня лайв-видео с камеры, хватит ли скорости для попиксельной обработки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Так попробуйте и узнаете! Заодно и нам расскажите... Что мешает?

 

P.S.

А как с камерой работаете? Примерчиком не поделитесь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если речь идет о работе с камерой, то использование TBitmapSurface будет быстрее. И он уже имеет специальные методы трансформации изображения, в том числе отражения относительно вертикальной оси:

TBitmapSurface.Mirror
TBitmapSurface.Flip
TBitmapSurface.Rotate90

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

пока спрашивал, поставил XE7

прошел через все изменения

нашел Bitmap.FlipHorizontal.

оказалось, что теперь он работает!

 

с зеркальной камерой Canon работаю через их API

взял обертку C# и переписал на Delphi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу