LINUX.ORG.RU

Qt, плавная анимация.


0

4

Не хочется связываться с animation framework, т.к. он вроде-бы больше подходит для всяких перемещений фигур и изменения параметров виджетов.

У меня задача сильно проще: есть виджет, типа осциллографа или стрелки вольтметра. Параметры могут обновляться очень быстро, но пытаться с той же скоростью запихнуть картинку в иксы или в виндогуй - это будет ненужная потеря производительности, ведь картинка на экране обновляется реже. Выводить с какой-то постоянной частотой по какому-нибудь таймеру (по какому?) - не везде выглядит плавно. Например на линукс-машине привязка к условным 30fps (отмеряю по кривому таймеру как умею) даёт плавную картинку, а в винде тот же кросс-платформенный Qt код работает не так плавно, выглядит как 20 fps, как будто неудачно попадаю в синхронизацию. Приходится ставить 50 fps, но тогда под линуксом этот код жрёт больше чем нужно... Короче, всё это выглядит криво, хочется сделать нормальнее.

сделай стрелку, имеющую массу. тогда можешь хоть 10 поставить - будет плавно.

nanoolinux ★★★★ ()
Ответ на: комментарий от m0rph

Это просто таймлайн... Что он скажет про FPS и привязку к видеосистеме? Или что-то скажет?

kiverattes ★☆ ()

Например на линукс-машине привязка к условным 30fps (отмеряю по кривому таймеру как умею) даёт плавную картинку, а в винде тот же кросс-платформенный Qt код работает не так плавно, выглядит как 20 fps, как будто неудачно попадаю в синхронизацию. Приходится ставить 50 fps, но тогда под линуксом этот код жрёт больше чем нужно...

ifdef?

А вообще поковыряй animation framework, незачем изобретать веловипеды.

unfo ★★★★★ ()

Зачем тебе animation framework, если под эту задачу хватит возможностей QPainter?

Я так понимаю, у тебя есть какая-то функция/массив/способ узнать по времени некое значение. В каждом цикле обновления найди дельту времени между текущим и последним обновлением, и на эту же дельту увеличивай время в своей функции. В чём затык?

schizoid ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.