另一个频谱板






4.78/5 (14投票s)
2003年10月17日
1分钟阅读

83793

2771
MFC 频谱板控件
引言
这是一个简单的频谱/条形直方图控件,可以轻松地集成到您的多媒体项目或其他类似项目中。它们通常显示从解码的PCM序列值中生成的FFT值数组,这些PCM序列值来自压缩的音频数据。
如何使用
使用此控件的步骤很少
- 在您的项目中包含两个文件,SpectrumCtrl.h 和 SpectrumCtrl.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占位符来拥有自己的窗口大小。干杯!