gpt4 book ai didi

wpf - WPF 能否在性能敏感的环境中渲染包含 300,000 个点的线条路径?

转载 作者:行者123 更新时间:2023-12-02 08:10:11 26 4
gpt4 key购买 nike

简单的 XY 线图:X 轴将代表可能的评级百分比的完整范围,从一端的 0% 到另一端的 100%。具体来说,X 值将代表我们的评级截止值,或者交易在不再可接受之前可以具有的最低评级。 Y 轴将显示从 0 到已完成的交易总数的值。 Y值将代表评级大于当前X值(或大于或等于当前X值,我还没有决定)的交易总数。首次绘制该图时,不会发生任何事务,因此该图将从“y=0x”开始。

假设第一笔交易成功,评级为 40%。该交易的评级表明,如果我们的评级截止值低于 40%,则该交易是可以接受的。 (...或小于或等于 40%。再说一遍,我还没有决定)。

首先,Y 轴将重新缩放以显示 0-1 的范围(因为 1 是交易总数)。然后,该行将被修改,以指示 x=40 或以上可接受 0 个交易,x=40 或以下可接受 1 个交易。在 WPF 中,只需向线条路径添加两个点(一个位于 (40,0),另一个位于 (40,1)),然后将线条的左端点移动到 (0,1),即可轻松实现这一点。线的右端点将保持在 (100,0)。然后可以对第二笔交易重复此过程,依此类推。

问题是我们将处理六位数的交易量。我想确保最大限度地使用 WPF 的硬件加速矢量绘图功能,以确保图形在尝试将 300,000 个点渲染到单条线路径上时不会滞后或卡住程序的其余部分。或者 WPF 是否应该能够立即处理这样的数字?我需要找到一种方法来实现该图,而又不会减慢应用程序的速度。我相信 WPF 的矢量绘图平台将提供一个解决方案,但我对如何利用 WPF 还不够了解,无法确定我是否能充分利用 WPF 的高性能渲染功能。

最佳答案

我刚刚偶然发现了这篇文章,并且正在自己构建一个折线图控件,当我们实时更新线上的点时,该控件需要非常高性能。

如果性能和 Visual 数量是您所追求的...我怀疑您会找到比直接针对 WPF 的 Visual 层进行编程更具性能的方法(链接: 12)。我使用这种方法的初步结果非常积极。

这比重写 OnRender 的性能更高,因为它会鼓励您利用 WPF 的保留模式绘图子系统(其中缓存了所有绘图指令)。

也就是说,如果您需要更新的是线上的一个点,那么更新该点将强制线 Visual 更新,但不会强制图形的其余部分(轴、网格线等)更新更新...因为这些的绘图说明被保留并将被重用(因为它们没有更新)。

第 14 章 Pro WPF in C# 2008 Matthew MacDonald 撰写的一个很棒的章节(标题为“Visuals”)介绍了针对 WPF 视觉层的编程。 第 2 章 WPF Control Development Unleashed 第 13 页上还有一节讨论了 DrawingVisual 方法如何完美地用于图表组件。最后,Charles Petzold写了一篇 MSDN 杂志 article其中散点图的最佳整体解决方案是 DrawingVisual 方法。

(现在,我知道你的问题提到轴也将更新......所以我的答案确实适用于一般情况......但我仍然认为这种方法将是最有效的。 ..因为只有需要更新的东西...才会更新。)

关于wpf - WPF 能否在性能敏感的环境中渲染包含 300,000 个点的线条路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com