精华内容
下载资源
问答
  • 如何绘制波形图
    2021-03-03 12:34:18

    package com.tur.demo;

    import javax.swing.*;

    import java.awt.*;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.List;

    import java.util.Random;

    class DataReceiver extends JPanel {

    private List values; // 保存接收到的数据的容器.

    private static final int MAX_VALUE = 200; // 接收到的数据的最大值.

    private static final int MAX_COUNT_OF_VALUES = 50; // 最多保存数据的个数.

    public DataReceiver() {

    values = Collections.synchronizedList(new ArrayList());

    // 使用一个线程模拟产生数据.

    new Thread(new Runnable() {

    @Override

    public void run() {

    Random rand = new Random();

    try {

    while (true) {

    addValue(rand.nextInt(MAX_VALUE)); // 产生一个数据,并模拟接收并放到容器里.

    repaint();

    Thread.sleep(100);

    }

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }).start();

    }

    @Override

    public void paintComponent(Graphics g) {

    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    int w = getWidth();

    int h = getHeight();

    int xDelta = w / MAX_COUNT_OF_VALUES;

    int length = values.size();

    for (int i = 0; i < length - 1; ++i) {

    g2d.drawLine(xDelta * (MAX_COUNT_OF_VALUES - length + i),h-normalizeValueForYAxis(values.get(i), h),

    xDelta * (MAX_COUNT_OF_VALUES - length + i + 1),h-normalizeValueForYAxis(values.get(i + 1), h));

    }

    }

    /**

    * 接收到的数据放入内存.

    * @param value

    */

    private void addValue(int value) {

    // 循环的使用一个接收数据的空间.

    // 最好是实现一个循环数组,而不是偷懒的使用ArrayList.

    if (values.size() > MAX_COUNT_OF_VALUES) {

    values.remove(0);

    }

    values.add(value);

    }

    /**

    * 规一化y轴方向的值. 使得value在y轴的值为[0, height]之间.

    *

    * @param value

    * @param height

    * @return

    */

    private int normalizeValueForYAxis(int value, int height) {

    return (int) ((double) height / MAX_VALUE * value);

    }

    private static void createGuiAndShow() {

    JFrame frame = new JFrame("");

    frame.getContentPane().add(new DataReceiver());

    // Set frame's close operation and location in the screen.

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(400, 400);

    frame.setLocationRelativeTo(null);

    frame.setVisible(true);

    }

    public static void main(String[] args) {

    createGuiAndShow();

    }

    }

    更多相关内容
  • c# winform绘制波形图

    2022-06-13 16:07:33
    c# winform绘制波形图
  • c#winform绘制波形图

    2022-03-10 14:42:52
    c#winform绘制波形图
  • 绘制波形图

    2018-12-19 09:27:50
    在对话框上有一个...启动一个定时器,每次定时器到时,所有波形数据都前移一个单位,并获取一个80以内的随机数作为波形的最后一个数据,然后以绿色画笔在绘图控件上绘制波形。这样就实现了波形绘制及动态变化。
  • 作者原来的下载链接失效了,我照着网页上代码重新建的工程,可以跑,作为一名多年的伸手党,希望能够帮助到大家! https://blog.csdn.net/qq_40006363/article/details/78655110
  • 主要介绍了java读取wav文件(波形文件)并绘制波形图的方法,涉及java操作多媒体音频文件转换的相关技巧,需要的朋友可以参考下
  • VC++ 实现绘制波形图动态图,类似示波器的界面,信号用正弦信号模拟,可调节显示的幅度档和时间档,可对信号进行暂停观测,可上下左右移动信号波形。
  • WPF+Webbrowser+Echarts+Naduio音频转换像素点位,像素点位转时间x与y关系点位,实现动态时间波形图,时间精确到毫秒。附原始MP3文件转wav文件,项目可直接运行
  • SerialChart串口绘图软件,用于从串口读入CSV数据(用逗号分隔),并直观地绘制波形图
  • C#绘制波形图Demo

    2018-07-07 10:41:34
    利用C#把数据绘制成二维图波形图,实时动态显示数据的变化
  • VC++ 实现绘制波形图动态图 VC++ 实现绘制波形图动态图 VC++ 实现绘制波形图动态图 VC++ 实现绘制波形图动态图 VC++ 实现绘制波形图动态图 VC++ 实现绘制波形图动态图
  • LabVIEW的波形图

    2021-01-19 23:06:19
    波形图绘制单值函数,在波形图接收所有需要显示的数据后性显示在前面板窗口中,其显示的图形是稳定的波形。在下接收数据时,波形图不保存上的历史数据,数据全部更新,在前面板窗口中只显示当前接收的数据。  ...
  • 波形 Golang 项目,目的是练习、理解 golang 和音频文件格式。 用法 要求 Go 1.11(Go 模块) 命令行 通过 CLI 生成波形图像 GO111MODULE=on make ./bin/go-waveform -t dark -r 1000 -f png example/violin.wav ...
  • 易语言BASS绘制波形图

    2020-08-20 03:08:27
    易语言BASS绘制波形图源码系统结构:draw,取低十六位,取高十六位, ======窗口程序集1 || ||------_按钮1_被单击 || ||------draw || ||------取低十六位 || ||------取高十六位 || ||------__启动窗口_创建完
  • Android系统音频PCM波形图绘制算法与实现.docxAndroid系统音频PCM波形图绘制算法与实现.docxAndroid系统音频PCM波形图绘制算法与实现.docxAndroid系统音频PCM波形图绘制算法与实现.docxAndroid系统音频PCM波形图绘制...
  • BASS绘制波形图.rar

    2020-04-04 11:01:17
    BASS绘制波形图.rar
  • 一个非常好用的MFC 曲线控件 在CDialog.h中定义控件 CChartCtrl m_cChartFx; 在CDialog.cpp中 绑定控件 DDX_Control(pDX, IDC_STATIC_FY, m_cChartFy); 初始化控件 CChartAxis *pAxis = NULL;...
  • C# 绘制波形图

    2012-08-27 11:37:19
    像 股票软件K线一样, 可以放大, 缩小, 自适应, 比较多组数据
  • 包含使用NAudio进行录音和播放录音操作的代码,同时包括在录音时根据音频数据绘制波形图的代码,WPF绘制
  • 摘要:C#源码,图形图像,波形图,图形绘制 学习C#的参考范例源码,绘制波形图的源代码,运行编译的程序后,直接生成波形图,要了解原理的朋友,就请下载C#源码一看究竟。
  • QT篇之QChart绘制波形图操作(上)

    千次阅读 2020-07-20 15:58:12
    现在开始QChart绘制波形图之旅 先看一下运行结果: 每个横坐标90000个点,一共跑了二百四十多万条数据,卡顿是有的,但是操作起来还说得过去 功能描述: 1. 可以将读取的CSV数据在波形图上描绘出来 2. 可以切换...

    接上篇文章QT篇之QT读取CSV数据

    现在开始QChart绘制波形图之旅

    先看一下运行结果:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    每个横坐标90000个点,一共跑了二百四十多万条数据,卡顿是有的,但是操作起来还说得过去
    功能描述:
    1. 可以将读取的CSV数据在波形图上描绘出来
    2. 可以切换不同的波形图页面
    3. 可以在图表上显示红色垂线(P波)
    4. 可以手动输入来调整垂线在波形图中的位置
    5. 可以将波形图响应键鼠事件,执行缩放移动等操作
    6. 可以用鼠标悬停显示波形图中曲线的坐标点信息
    7. 可以显示动态波形图
    
    有了需求,我们开始分析解决方案

    问题:

    1. 用什么图表(工具)来绘制波形图(曲线)?
    2. 怎么在图表上绘制一条垂线(折线)?
    3. 怎么在图表上添加项目数据?
    4. 怎么为这么多图表设计布局?
    5. 怎么动态调整垂线的位置?
    6. 怎么为图表添加缩放移动操作?
    7. 怎么为图表曲线(/折线)序列添加鼠标悬停显示坐标点功能?
    8. 怎么绘制一个动态的波形图?
    
    下一篇,开始着手问题具体分析
    展开全文
  • VoiceRecorderDemo iOS根据音频文件的音调高低,绘制波形图,可以做参考。
  • 主要介绍了Python3.7 读取 mp3 音频文件生成波形图小编,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 用QChart绘制波形图 用到的知识

    Qt开发技术:QCharts(一)QCharts基本介绍以及图表框架详解

    QT – QChart的几种 坐标轴 的详细介绍及使用代码示例

    QT篇之QChart绘制波形图操作(上)

    QT篇之QChart绘制波形图操作(中)

    Qt超强绘图QCustomplot 动态图静态图时间坐标轴

    QCustomPlot使用手册(持续更新中。。。)

    QCustomPlot使用手册

    Qt 之界面数据存储与获取

    //setUserData()和userData()
    //通过setUserData(),我们可以存储用户数据。
    
    //注意:用户数据需要被定义为QObjectUserData类型。
    
    struct SenderInfo:public QObjectUserData
    {
    	QString strName;
    }
    
    QPushButton *pButton = new QPushButton(this);
    pButton->setText("Sender1");
    
    // 用户数据
    SenderInfo* pInfo = new SenderInfo;
    pInfo->strName="Sender1"; 
    
    pButton->setUserData(Qt::UserRole, pInfo );  // 设置用户数据
    
    // 连接信号槽
    connect(pButton, &QPushButton::clicked, this, &MainWindow::onClicked);
    
    槽函数,获取用户数据,执行相应操作。
    
    void onClicked() {
        // 获取发送者
        QObject *pObject = this->sender();
        QPushButton *pButton = qobject_cast<QPushButton *>(pObject);
    
     	// 获取用户数据
    	SenderInfo* pInfo = (SenderInfo*)(pButton->userData(Qt::UserRole));
       
        qDebug() << "sender: " <<pInfo->strtName;
    }
    通过userData()可以获取QObjectUserData数据,然后转换成我们需要的类型User。
    
    //效率较高的往折线图中插入数据
    _pLineSeries = new QLineSeries;
    _pLineSeries2 = new QLineSeries;
    _pLineSeries3 = new QLineSeries;
    _pLineSeries4 = new QLineSeries;
    QList<QLineSeries *> listLine;
    listLine.append(_pLineSeries);
    listLine.append(_pLineSeries2);
    listLine.append(_pLineSeries3);
    listLine.append(_pLineSeries4);
    for(int index = 1; index < 4; index++)
    {
        QList<QPointF> listPointF;
        for(int index = 0; index < 11; index++)
        {
            listPointF << QPointF(index, qrand()%11);
        }
        listLine.at(index)->append(listPointF);
        listLine.at(index)->setName(QString("通道%1").arg(index+1));
        listLine.at(index)->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));
        listLine.at(index)->setUseOpenGL(true);//opengl显示加速,奔奔马上变奔驰
        // 通用:将批量数据插入到图表中
        _pChart->addSeries(listLine.at(index));
    }
    
    
    
    

    Qt 让QLabel自适应text的大小,并且自动换行

    在实现了newform的2个页面的功能以后,为了完善产品的人性化,我在第2个页面上增加了一个显示前面已经选择的路径和模板名称的功能。但是这里就遇到了一个问题,如果万一用户选择的路径和名称都太长了,那么下面在显示的时候就会截断,这就很不爽了。

    别看这个小问题,这就涉及了2个技巧。
    1
    让QLabel自适应text的大小,直接用下面的代码:
    LabelName->adjustSize();
    LabelName->setText(“1234”+"\r\n"+“456789”);//两行显示
    LabelName->LabelName->setAlignment(Qt::AlignCenter);//垂直水平居中

    让QLabel能够自动判断并换行显示:
    LabelName->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距

    LabelName->setWordWrap(true);
    LabelName->setAlignment(Qt::AlignTop);

    设置QLabel文本的颜色

    第一种,使用setPalette()方法如下:

    QLabel *label = new QLabel(tr("Hello Qt!"));
    QPalette pe;
    pe.setColor(QPalette::WindowText,Qt::white);
    pe.setColor(QPalette::Background, Q::yellow);
    label->setAutoFillBackground(true); //这句很关键,否则背景色被默认windows替代
    label->setPalette(pe);
    

    第二种,使用样式表如下:

    setStyleSheet("color:red;"); 
    //setStyleSheet("color:#ff6600;");
    

    第三种,使用QStyle,在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。

    第四种,使用一些简单的HTML格式:

    QLabel *label = new QLabel("<h2><i>Hello</i><font color=red>Qt!</font></h2>");
    

    往QChart中显示折线图,需要注意的:

    首先是画两条折线(限制线)的代码
    在这里插入图片描述
    其次,是第一种为上面画的两条折线添加并关联坐标轴【一定要注意将上面画的两条折线关联到X/Y轴上,否则画的东西跟坐标轴上显示的数据毫无关联】
    在这里插入图片描述
    第二种为上面画的两条折线,添加显示,这种方法可取,只用设置一次,不用为关联到这上面的所有折线都attachAxis,一劳永逸
    在这里插入图片描述
    推荐使用第二种方法
    最后,整个效果如下,完美
    在这里插入图片描述

    **

    listLine.at(index)->setUseOpenGL(true);//opengl显示加速,奔奔马上变奔驰

    **

    展开全文
  • VC++ 实现绘制波形图动态图_outline7z8_信号波形图_park5dd_示波器界面_VC++实现绘制波形图动态图_源码.zip
  • MFC绘制波形图代码

    2018-12-18 09:45:44
    改代码实现了波形图的的绘制并显示,是在基于MFC框架下开发的,一键编译运行即可,并可查看源码,可快速移植
  • 利用Java实现DFT、FFT,读取WAV文件,并绘制波形图和频谱图,音频播放频谱或波形图实时显示效果。 几个工程打包于文件夹DFT_FFT: DFT_IDFT:计算前N点DFT,并绘制波形图或频谱图; FFT:计算前N点FFT,并绘制波形图...
  • 端点检测绘制波形图1

    2022-08-03 21:50:22
    端点检测绘制波形图1

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,980
精华内容 7,192
关键字:

如何绘制波形图