Задача:
Написать виджет, который бы отрисовывал большое количество точек.
Желательно:
1) минимальная загрузка процессора PIII и выше, 2) отсутствие эффекта мерцания, 3) установка цвета каждой точки, 4) точки перемещаются по картинке "водопадом", т.е. каждый промежуток времени предыдущая картинка сдвигается на одну линию и добавляется линия с новыми точками, 5) масштабирование "без дыр", т.е. если увеличить/уменьшить картинку или растянуть/сжать виждет между точками не появлялось бы расстояний. Например, если это кривая с заливкой под ней, она бы растягивалась в ширину, а дыр в заливке не появлялось. В QwtPlotCurve из библиотеки Qwt 5.сколько-то со стилем отображения Sticks при растяжении графика появляются незакрашенные вертикальные полосы. К тому же QwtPlot загружает проц. 6) и т.д.
Решение:
Прорисовку осуществляю в массиве ipps32u (библиотеки Intel IPP). Копирую это дело в QImage по указателю bits(), вывожу на виджет с помощью QPainter. (только сейчас подумал, а не рисовать ли сразу в QImage::bits()?). При большом количестве цветов появляется эффект мерцания, но этого наверно не избежать=(
Но вот проблема: если ухватить мышью заголовок окна или развернуть его во весь экран (и наоборот), отрисовка на какое-то время замирает. Добавил в paintEvent виджета вывод в QStatusBar инкрементируемую внутри этого события переменную - она в это время не изменяется!!! Т.е. не приходит событие перерисовки!!! Причем, если время таймера поставить 10 мсек (пока рисую по timerEvent, но планируется рисование в реальном времени!) и держать мыщью заголовок окна, то событие отрисовки вообще не приходит=(( Есть ли какой-нибудь способ от этого избавиться? Qt необходимо, т.к. приложение д.б. кросс-платформенным, и API использовать нельзя.