我正在开发一个Winform程序,它在Canvas上绘制各种形状。
我的下一步是为这些形状添加一个'Z'属性,以便在其中一些占据公共空间时能够确定哪一个位于顶部或另一个之下。
这种差异化有两种情况:当用户选择具有两个或更多形状的空间时,以及何时绘制它们。
这些形状存储在IBindingList
集合中,因此它有ApplySort
方法,这是我的第一个想法:根据Z属性对形状进行排序,按递增顺序绘制它们并按降序选择它们。
不幸的是,当我的集合在短时间内多次修改(在整个画布上滚动视图或缩放时)时,这会导致性能下降问题,因此我正在寻找一种不同的方式来对形状进行排序。 / p>
到目前为止,我正在探索其他可能性:
你认为我正朝着正确的方向前进吗?或者有没有办法避免在屏幕上永久排序所有元素?