COscilloscopeCtrl






4.48/5 (16投票s)
具有多个频带(频率)
引言
最近,我正在进行的一个项目需要显示一些变量数据,例如信号强度、信噪比等。像往常一样,我深入 Code Project,确信能找到解决方案。正如预期的那样,我确实找到了一些,但不幸的是,没有一个完全符合我的要求。首先,我需要显示不同类型的数据,也就是说,控件需要有多个频段。其次,代码需要与 Windows CE 兼容。
经过一些评估,我选择了 Mehdi Mousavi 的 CHistogramCtrl,它足够易于移植到 Windows CE。我所做的只是添加了一些修改,以包含对多个频段的支持,仅此而已。
使用代码
使用该代码非常简单。你所做的就是使用 COscilloscopeBand
对象的新的实例将频段添加到控件中。例如,在对话框的 OnInitDialog
方法中。
// m_Oscilloscope is the instance of COscilloscopeCtrl m_Oscilloscope.m_Bands.Add(new COscilloscopeBand(_T("Band1"), RGB(0x99, 0xFF, 0x66), 1, 1, 100)); m_Oscilloscope.m_Bands.Add(new COscilloscopeBand(_T("Band2"), RGB(0, 0, 255), 1, 1, 200)); // Create the scope ctrl itself..., we'll place it over an //already existing static ctrl in the dialog CRect rect; GetDlgItem(IDC_STATIC_OSCILLOSCOPE)->GetWindowRect(rect); ScreenToClient(rect); m_Oscilloscope.Create(WS_VISIBLE | WS_CHILD, rect, this, IDC_OSCILLOSCOPE);
你可以通过调用其 SetPos
方法来设置频段的位置。你还必须每次想要更新显示时都调用 DrawBands
。COscilloscopeCtrl
还包含一些其他有用的方法来修改各个频段的画笔宽度、颜色等。请查看源代码。
待办事项
绘制某种形式的图例来描述一个频段。我为频段的构造函数包含了一个频段名称,用于此目的,但一直没有时间去做。希望有人能帮忙! :)