在第三维

时间:2015-08-07 03:16:44

标签: c# performance canvas

我正在开发一个Winform程序,它在Canvas上绘制各种形状。

我的下一步是为这些形状添加一个'Z'属性,以便在其中一些占据公共空间时能够确定哪一个位于顶部或另一个之下。

这种差异化有两种情况:当用户选择具有两个或更多形状的空间时,以及何时绘制它们。

这些形状存储在IBindingList集合中,因此它有ApplySort方法,这是我的第一个想法:根据Z属性对形状进行排序,按递增顺序绘制它们并按降序选择它们。

不幸的是,当我的集合在短时间内多次修改(在整个画布上滚动视图或缩放时)时,这会导致性能下降问题,因此我正在寻找一种不同的方式来对形状进行排序。 / p>

到目前为止,我正在探索其他可能性:

  • 永远不要对它们进行排序,只是在有交叉点时进行比较,但这会迫使我每次重新绘制画布时都要进行检查。
  • 拥有一个已经排序的集合,关联Z级别和属于这个级别的形状集合,这样我只需要检查一个形状所依赖的级别,并按主集合的顺序绘制它们。

你认为我正朝着正确的方向前进吗?或者有没有办法避免在屏幕上永久排序所有元素?

0 个答案:

没有答案