我正在构建一个简单的程序,在C#中在屏幕上创建一堆分散的树。我对C#还是比较新的所以请耐心等待。我的程序创建了树,但是一些图像最终在彼此之上,因为树是以看似随机的顺序绘制的。
我有一个树对象的列表,我想知道如何通过树的Y值(treeObject.position.Y)对这个列表进行排序,当我在for循环中调用每个树的绘制方法时它会先画出最后面的那些(最小的Y)。我努力编写它但它变得太麻烦了。
此处提供完整代码: http://pastebin.com/5G6aecLm
答案 0 :(得分:2)
使用某种排序算法,最好是:QuickSort
答案 1 :(得分:1)
如果我理解你的问题,有很多方法可以做到,这里只有一个:
假设您的列表类型为List<TreeObject>
:
using System.Linq;
var q = yourList.AsEnumerable<TreeObject>().OrderBy(obj => obj.position.Y);
然后循环q以正确的顺序获取对象。
答案 2 :(得分:0)
如果您使用的是具有3D功能的绘图引擎,只需使用世界的正视图即可。您将看到没有区别,但您将能够使用z来控制深度(z = -y将具有所需的效果),以及能够有效地缩放,旋转和变形2D精灵。 / p>