作为我的音频库的一部分,我想创建一个示例可视化。我知道如何获得我想要绘制的值,例如 fft 结果等等。但主要问题是我不知道画它们的最佳方法是什么。我在使用 wpf 方面有很多经验,但我从来没有做过这样的事情。我应该使用什么来保持性能尽可能好?
1 回答
您可以采用多种不同的方法,具体取决于您需要的质量、内存使用情况和性能......这里只是一些。
创建一个从 FrameworkElement 派生的新对象,然后在 OnRender 期间通过在 DrawingContext 上绘制来动态绘制“视觉”方面。绘图的开销比其他 WPF 元素(如 Shapes、Image 等)要低得多。但是,如果您有 1000 个元素,它仍然可能无法很好地缩放。http://msdn.microsoft.com/en-us/library/ms751619.aspx
WriteableBitmapEx ....它将为您提供直接写入位图所需的绘图原语。http://writeablebitmapex.codeplex.com/ .. 看到一些演示,这些演示与您为音频可视化所做的非常相似。http://blogs.claritycon.com/blog/2011/03/advanced-animation-animating-15000-visuals-in-silverlight-2/
将 DirectX 与 Direct2D 一起使用。这提供了类似 DirectX 的性能,但您需要使用 COM 互操作或 C++/CLI 代码包装器才能使其可用于您的 .NET C# 代码。http://www.codeproject.com/Articles/113991/Using-Direct2D-with-WPF
其他一些链接: