【问题标题】:Show a lot of Data in a chart (Create Waveform)在图表中显示大量数据(创建波形)
【发布时间】:2010-09-16 10:27:38
【问题描述】:

我想创建一个带有波形的 SoundEditor。

我想以这种波形显示所有样本,但样本数 > 9000000,因此我的程序运行得很差。

请帮助我,创建一个快速显示所有样本的波形。

我使用 MSChart for Framework 3.5 sp1

【问题讨论】:

    标签: c# .net visual-studio winforms performance


    【解决方案1】:

    你必须从另一面来解决这个问题:你有一个由用户+屏幕确定的细节数量的上限。

    所以考虑一下:我有什么数据(比如说 10.000.000)以及我可以显示什么(1000 像素宽)。然后你必须简化 1:1000。最好为此确定一个公式,不要让它由图形引擎四舍五入。

    当您添加缩放选项时,比例会发生变化。

    【讨论】:

    • 当然,缩放也会导致裁剪,这也减少了一次必须绘制的样本数量。
    • 我从图表中使用,所以我不受显示宽度的限制。这意味着我可以显示所有示例,但我的问题是如果我不显示所有示例用户无法编辑带有详细信息的波形,现在如果我可以显示所有示例我的程序工作不好。我想用户缩放到波形并查看样本。
    • @Majid:我想你想展示整个长度。但并非所有样本(一直)。您需要一个(下采样)过滤器。
    • 亨克是正确的。创建一个可视化过滤器,同时仍然在后台保留完整数据(以便用户可以编辑详细信息)。处理缩放、平移等以重新过滤。
    • 所以您使用了未针对该数据量优化的第三方控件,并且对性能不佳感到疑惑? ;) 祝贺。成就了我的一天。专门解决方案的数据量。
    【解决方案2】:

    如果您允许每个样本沿时间轴使用一个像素,那么您将需要一个在其中一个维度上具有 9x10^6 像素的显示器。如果做不到这一点,您必须在显示器的能力范围内进行下采样,或者实现一个滑动窗口,以便您可以查看部分波形。

    如果您的程序表现不佳,这可能表明下采样是可行的方法。

    【讨论】:

    • 用音频术语来说,下采样是一种低通滤波器。
    • 我从图表中使用,所以我不受显示宽度的限制。
    • 这意味着我可以显示所有示例但我的问题是如果我不显示所有示例用户无法编辑带有详细信息的波形,现在如果我可以显示所有示例我的程序工作不好。跨度>
    • 我想用户缩放到波形并查看样本。
    猜你喜欢
    • 2011-01-03
    • 2019-11-17
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多