将WPF PathGeometry拆分为"tiles"

FTL*_*Guy 6 wpf split tiling pathgeometry

我有一个相当大的PathGeometry(超过100,000个点并且描边但没有填充)为用户显示,但是在任何时候只有一小部分路径可见.为了澄清,路径本身不是预先确定的,而是根据数据创建的.

问题:我想提供非常平滑的平移,以便用户可以探索更大路径的区域.

我有一个可能的解决方案,但我不知道如何解决它.我想使用平铺技术 - 将几何体分割成瓷砖,只加载可见的瓷砖.

那么,如何将仅笔划路径几何体分割为切片.更具体地说,如何确定给定矩形瓦片中存在的路径部分?

我知道我可以使用CombinedGeometry来确定路径几何和矩形之间的相交,但是这将包括矩形的"墙"(将被描边).是否有更好的方法来平铺仅限笔划的PathGeometry?

谢谢!

Ed *_*ers 3

也许不需要平铺,只需使用一个路径几何图形,并使用数据绑定或其他方式以编程方式更改路径数据来表示您放大的路径段。有点像 DeepZoom 但有路径。这意味着您不必搞乱合并路径。

我正在做与你类似的事情,但我在路径中使用的数字略少,所以我没有考虑使用任何虚拟化方法。但是,我没有注意到大规模的性能问题。我在滚动查看器中有一条代表大约 1000 - 10000 个点的路径,只有当我放大这些点时,只有当这些点相距很远时,它才会变得滞后。如果路径中的点相对靠近它们的邻居(例如,良好的扫描正弦波),则 WPF 会对它们执行某种优化,以防止任何可察觉的滞后。

例如:这条路...

多重正弦

...比这条路径绘制需要更长的时间:

简单正弦

即使它们包含相同数量的描述点。尽管实际上,在您注意到性能上的任何差异之前,路径需要开始如下图所示。

麻烦制造者

因为该路径代表音频波,所以我打算通过执行某种检查来消除任何未来的问题,看看这些点是否正在创建一个巨大的深蓝色块,并用耗电量较小的东西替换它,但这可能不是为您提供足够的解决方案。

(很抱歉图像的大小差异,计算正弦波的位目前不起作用,所以我不得不使用旧的 jpeg)