65.9K
CodeProject 正在变化。 阅读更多。
Home

另一个频谱板

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.78/5 (14投票s)

2003年10月17日

1分钟阅读

viewsIcon

83793

downloadIcon

2771

MFC 频谱板控件

引言

这是一个简单的频谱/条形直方图控件,可以轻松地集成到您的多媒体项目或其他类似项目中。它们通常显示从解码的PCM序列值中生成的FFT值数组,这些PCM序列值来自压缩的音频数据。

如何使用

使用此控件的步骤很少

  • 在您的项目中包含两个文件,SpectrumCtrl.hSpectrumCtrl.cpp
  • 在您的表单/对话框中创建一个PictureBox(框架)
  • 将其ID更改为您想要的任何值
  • 在您的表单/对话框类的声明中包含 SpectrumCtrl.h
  • 将以下内容放入您的对话框/表单类中
    CSpectrumCtrl   m_spectrumboard;
  • 在您的应用程序中创建一个CSpectrumCtrl类的实例
    CWnd *m_pWnd;
  • 初始化控件,通常在对话框中的OnInitDialog()或表单中的OnInitialUpdate()
    m_pWnd = (CWnd*) GetDlgItem(IDC_STATIC_PICTURE_BOX_ID);
    m_spectrumboard.Create(JUMLAH_ELEMENT_ARRAY, 20, &CSize(4, 1), 
       WS_VISIBLE | WS_CHILD | WS_TABSTOP, m_pWnd, this, 1000);

    CSize(4, 1) 表示频谱板中块/单元格元素的大小为4像素宽度和1像素高度

  • 调用以下方法来可视化一个整数数组
    m_spectrum.DisplayArray(iPtrNilai);

您可以修改源代码中的以下常量以进行视觉外观自定义

#define SPASI_ANTAR_CELL     1
#define PEAK_DROP_SPEED      1
#define PEAK_HEIGHT          1
#define MAX_PEAK_LIVE_TIME   7
#define PEAK_TOLERANT        2 // 2 blocks

每个常量的描述

  • SPASI_ANTAR_CELL 是频谱板中单元格/块之间的空白
  • PEAK_DROP_SPEED 是峰值受重力影响的值
  • PEAK_HEIGHT 是峰值的高度,以像素为单位
  • MAX_PEAK_LIVE_TIME 是在峰值受到重力影响之前暂停峰值的数量
  • PEAK_TOLERANT 是频谱板顶部的限制块/单元格区域

结论

该类将通过修改您在运行时PictureBox占位符来拥有自己的窗口大小。干杯!

© . All rights reserved.