资源简介
基于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 Creator5)
- STM32f103超声波模块例程
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- 用于无线传感器网络应用的超声波传
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
评论
共有 条评论