Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


krapotkin

Вопрос

Рекомендуемые сообщения

  • 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
  • Администраторы

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

TBitmapSurface.Mirror
TBitmapSurface.Flip
TBitmapSurface.Rotate90
Ссылка на комментарий
  • 0

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

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

нашел Bitmap.FlipHorizontal.

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

 

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

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

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

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