• 0
ENRGY

Графические артефакты (вертикальные линии) при анимации TImage

Вопрос

Простейшая анимация Timage + Float Animation который меняет RotationAngle картинки.

Если запустить анимацию, и если слева от крутящейся картинки стоит еще одна картинка или контрол (статичный), то на этом месте показываются и пропадают вертикальные линии, как будто эффект старой кинопленки.

Причем под Android все ок, такая ерунда под Windows. А мне нужно сделать прогу под Win и Android.

Кто нибудь сталкивался с таким?

Здесь большой круг вращается. А левый маленький - обычная картинка. (2 Timage).

Delphi Berlin Update 2 

del1.png.cd841db545cd7e93c660c7aafd235bf4.png

 

TestAnim.zip

Изменено пользователем ENRGY

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


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

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

  • 0

у меня под Win тоже иногда появляются вертикальные артефакты

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


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

А чем можно заменить Timage, может вручную можно отрисовать?

 

Пока я вижу единственный выход, это делать анимацию из 360 картинок и грузить их в TBitmapListAnimation..

Изменено пользователем ENRGY

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


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

360 совершенно избыточно

достаточно 20-30

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


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

В общем вот работающий костыль, который полностью убирает полосы.

2 Timage лежат на TLayout.

Если после каждого поворота менять высоту Tlayout на 0,001 туда-обратно, то полос нет.  На глаз никакого движения не заметно.

 

Жмем по FloatAnimation  и выбираем событие OnProcess.

Далее  

procedure TfrmSplash.FloatAnimation1Process(Sender: TObject);
begin
{$IFDEF MSWINDOWS}
  if Layout1.Height > fNormHeight then
    Layout1.Height := Layout1.Height - 0.001
  else
    Layout1.Height := Layout1.Height + 0.001;
{$ENDIF}
end;

procedure TfrmSplash.FormCreate(Sender: TObject);
begin
  fNormHeight := Layout1.Height; 
end;

 

Изменено пользователем ENRGY
Rusland понравилось это

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


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

Я про это говорю ещё с первого Berlina.

См 

При этом такой проблемы я не увидел на Win10

ENRGY понравилось это

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


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

Я работаю на Windows 10, линии появляются на ней.

Если  использовать GlobalUseGPUCanvas := true то баг пропадает. Но с этим флагом другая проблема, если в системе установлено dpi больше 100%, напр. как у меня 150%, то программа не масштабируется автоматически, т.е. форма становится пропорционально меньше, выглядит как для 100% dpi на 150%. Это аналог Form Scaled  := true на VCL. Хотя мне так больше нравится, я давно искал где же выключается это некрасивое масштабирование в FMX (слишком большое на мой взгляд).

Большое спасибо 

@andrew4010!

Изменено пользователем ENRGY

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


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу