Как выводится графика в реальном времени в приложениях Qt?
Собственно говоря, речь вот о чем.
Есть приложение на Qt для Windows, в котором по поступлению события от внешнего устройства прорисовать легкую анимацию — например, помигать изображением сабли посреди экрана и потом перенести в угол. Это означает:
1) что-то уже нарисовано.
2) пришло событие по USB — СРАЗУ ЖЕ отрисовываю посередке саблю.
3) «мигание» — это значит, что на протяжении пары секунд несколько раз плавные переходы от прозрачности к векторной картинке и назад.
4) потом эта векторная картинка плавно «улетает» в угол.
«Векторная» — это значит, что рисуется набор закрашенных кривых.
«Плавно» — это значит, чт ос небольшими промежутками времени прорисовываются промежуточные состояния изображения.
ВОПРОС: как делается такая плавная анимация? Я так понимаю, что надо запустить некоторый таймер (QBasicTimer?) на небольшой период (10… 20 msec) и запустить repaintс отрисовкой (или выводом заготовленных QPixmap?). Я пробовал так сделать, но плавности не получилось — промежутик выходят явно неравными. Да и таймер клацает значительно медленней, чем хотелось бы.
И процессор сильно загружается, похоже.
Но ведь как-то в Opera мигают картинки?.. Да и в других программах есть плавные мерцания изображений. В конце концов, в комп. играх этото вопрос как-то решается без жуткой загруженности процессора.
Данный класс и не привязан к виджетам. Он позволяет изменять с течением времени произвольные свойства произвольных QObject'ов, если они доступны через метасистему Qt. То есть, если изменяемое свойство каким-то образом влияет на отображением чего-либо в вашей сцене, вы получите визуальный эффект от работы анимации (как в примере из документации по ссылке — изменение свойства «geometry» влияет на отображение виджета).
не вопрос КАк нарисовать, вопрос запускать рисование С НУЖНОЙ ЧАСТОТОЙ. Т. е. мне надо шустро и быстро перерисовывать, а Open ли это GL или еще что — неважно.
Я так понимаю еще QGraphicsScene позволяет перерисовывать достаточно быстро?