资源简介
基于Qt的声波图形界面的动态绘制,底层使用图片递增绘制,内存使用最少,效率最高。
代码片段和文件信息
#include “CSoundWave.h“
#include
#include
#include ylePainter>
#include
#include
CSoundWave::CSoundWave(const unsigned int nTickTime/*设置跳动频率毫秒*/ const unsigned int &nRedrawSpacesQWidget *parent) :
QWidget(parent)
{
m_nTickTime = nTickTime;
m_nSpaces = nRedrawSpaces;
m_bInited = false;
m_bAutoWave = false;
m_brush = QBrush(Qt::white);
m_brushBackGround= QBrush(Qt::black);
m_drawTimer = new QTimer;
connect(m_drawTimer SIGNAL(timeout())thisSLOT(newLine()));
m_nMaxValue = 1000;
m_backColor =QColor(888888);
m_penColor = QColor(33 3333);
}
void CSoundWave::enableAutoWave(bool bAutoWave)
{
if (bAutoWave)
{
m_drawTimer->start(m_nTickTime);
}
else
{
m_drawTimer->stop();
}
}
void CSoundWave::setTickParamers(const unsigned int &nTickTime/*设置跳动频率*/ const unsigned int &nRedrawSpaces/*设置间隙,声波中采用1个像素*/)
{
}
void CSoundWave::setMaxValue(const unsigned int& nMaxValue)
{
m_nMaxValue = nMaxValue;
}
void CSoundWave::addNewSoundValue(const unsigned int& nNewSound)
{
_addNewSound(nNewSound % m_nMaxValue);
}
void CSoundWave::newLine()
{
_addNewSound(qrand() % m_nMaxValue);
}
void CSoundWave::_addNewSound(const unsigned int &value)
{
QRect rc = this->rect();
unsigned int nHeight = rc.height() * value /(float)m_nMaxValue;
unsigned int nStartY = (rc.height() - nHeight) / 2;
if (!m_bInited)
{
waveImg = QPixmap(rc.width() rc.height());
waveImg.fill(m_backColor);
m_bInited = true;
}
QPainter painter2(&waveImg);
painter2.setBrush(m_brush);
painter2.setPen(m_penColor);
QPainter painterTemp(&waveImgTemp);
painterTemp.setBrush(m_brush);
painterTemp.setPen(m_penColor);
painterTemp.fillRect(rect() m_backColor);
QRect newRc = waveImg.rect();
painterTemp.drawPixmap(QRect(00 newRc.width() - m_nSpaces newRc.height()) waveImg QRect( m_nSpaces0 newRc.width()- m_nSpaces newRc.height()));
painterTemp.drawLine(QPoint(rc.topRight().x() rc.topRight().y() + nStartY)QPoint(rc.bottomRight().x() rc.bottomRight().y() - nStartY));
painter2.fillRect(rect() m_backColor);
painter2.drawPixmap(QRect(00 newRc.width() newRc.height()) waveImgTemp QRect( 00 newRc.width() newRc.height()));
update();
}
void CSoundWave::paintEvent(QPaintEvent *ev)
{
QRect rc = this->rect();
if (!m_bInited)
{
waveImg = QPixmap(rc.width() rc.height());
waveImg.fill(m_backColor);
waveImgTemp = QPixmap(rc.width() rc.height());
waveImgTemp.fill(m_backColor);
m_bInited = true;
}
QPainter painter(this);
painter.drawPixmap(00 waveImg);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-03-14 11:56 CSoundWaveTest\
文件 2912 2016-03-14 14:06 CSoundWaveTest\CSoundWave.cpp
文件 1280 2016-03-14 14:02 CSoundWaveTest\CSoundWave.h
文件 400 2016-03-14 11:53 CSoundWaveTest\CSoundWaveTest.pro
文件 18303 2016-03-14 11:56 CSoundWaveTest\CSoundWaveTest.pro.user
文件 183 2016-03-10 15:04 CSoundWaveTest\main.cpp
文件 382 2016-03-14 11:53 CSoundWaveTest\mainwindow.cpp
文件 288 2016-03-14 09:53 CSoundWaveTest\mainwindow.h
- 上一篇:L6470PD马达驱动程序项目已验证OK
- 下一篇:计算网段、划分子网的小工具
相关资源
- Qt单机斗地主
- 智能小车QT远程客户端
- 视频小车QT客户端
- qt实现n皇后问题带界面
- QRGenerator.zip
- WidgetTimeline.zip
- linux下的设计QT计算器
- Qt自定义QLabel滚动显示文本文字,la
- 用Qt编写的具有人机对战的五子棋
- zw_QT读数据绘制曲线.zip
- qt实现串口读取GPS信息
- Qt带进度条的启动界面
- 用QT编写的五子棋游戏
- QT TCP Socket 通信
- 输入字符串自动转换二维码,并打印
- Qt自定义鼠标点击样式
- paho.mqtt.c-1.3.1
- 嵌入式毕业设计
- Qt Creator应用程序发布及修改应用程序
- MuWinWindow.rar
- QPushButton和QListView实现自定义QcomboBo
- zedboard移植opencv+qt的人脸检测
- QT串口通信程序
- Qt开发的文本编辑器
- Linux下Qt开发的中国象棋
- msp430f149超声波雷达
- 超声波清洗机的原理与选用.rar
- jz2440的DHT11驱动 +QT5.6的温湿度监测系
- qt aes加密 源代码
- 多平台QT USB设备热插拔检测库
评论
共有 条评论