如何用Qt制作平滑的水平(峰值)仪表

时间:2016-06-22 08:55:28

标签: qt qpainter

从频道获得最高级别:

BASS_ChannelGetLevelEx(chan, levels, 0.02, BASS_LEVEL_STEREO    ); 

这个函数我用相同的频率调用线程

void Thread::run()
{ 

 while(!m_abort)
    {

        emit SetLevels();
        QThread::msleep(20);
    }
}

通过QPainter绘制电平表

发生了什么

enter image description here

疯狂奔跑,急剧跳跃。但必须顺利

如何让它顺利进行?

1 个答案:

答案 0 :(得分:0)

当您的新峰值大于当前峰值时,只需指定新值即可。如果它小于那么以对数方式减小当前值,就像那样..

float factor = 0.10;
cur_left_value = cur_left_value - factor * (cur_left_value - new_left_value);

因素越大,您的峰值计数越快"下降"。您必须有一个计时器或线程,以连续使用上述逻辑分配最新(新)峰值。