这是我的第一个问题,
但我没有找到我的问题的真正答案。
我从事可视化程序并使用 C# 和 WPF。
我需要画一个树状图。我实际上创建了 Rectangle 对象,然后将它们添加到 Canvas 中,效果非常好并且非常有用,因为我还向这些矩形添加了事件处理程序(鼠标单击)。
不过我的性能有问题。当我添加矩形并设置 Stroke 属性 (SolidColorBrush) 时,整个过程非常缓慢。如果没有这些笔画设置,速度还可以。
我已经通过将 Rectangle 对象添加到新创建的 Canvas 对象,然后将这个新的 Canvas 对象添加到原始 Canvas 对象来稍微提高了性能(因此并非所有矩形都是原始 Canvas 的直接子级,这应该有助于加快速度)。
所以我的问题是如何在不破坏速度的情况下向所有这些矩形添加 Stroke。
您可以在链接中找到“无描边”和“描边”树形图版本的比较。
非常感谢您的帮助!
编辑:
好的,我找到了解决方案!
很抱歉先写在这里,但我已经搜索了几个小时来找到解决方案,但现在我发现问题出在我使用的 SolidColorBrush 上!
我有这样的事情:
public static SolidColorBrush TreeMapBorderBrush;
我使用这个 Brush 来设置应该添加到 Canvas 的每个 Rectangle 的 Stroke 属性。但这正是问题所在。
之前的代码是这样的:
rect.Stroke = Visualization_Helper.TreeMapBorderBrush;
我现在将其更改为:
rect.Stroke = Visualization_Helper.TreeMapBorderBrush.Clone();
所以我现在只在每个 Rectangle 上使用该 Brush 的副本,这样可以加快处理速度,就像没有 Stroke 一样(就像我的问题一样)!
仅供您参考!诡异的!