任何人都可以帮助我创建一个算法、IComparer 或一些可以对数组或PointF
元素列表进行排序的方法。假设我PointF
的数组中有以下元素:
- [0] { X = 50.0 Y = 0.0}
- [1] { X = 100.0 Y = 100.0}
- [2] { X = 0.0 Y = 100.0}
- [3] { X = 100.0 Y = 0.0}
- [4] { X = 0.0 Y = 0.0}
- [5] { X = 100.0 Y = 50.0}
- [6] { X = 50.0 Y = 100.0}
我想要实现的是:
- 首先是Y和X最低的元素
- 仍然是 Y最低但X会变大的元素
- 然后,随着在这个最低Y处的最高可能X得到实现,所有具有此X的元素都会消失,但Y越来越大
- 随着 top Y和 top X的实现,它将从 top X和 top Y的元素到仍然 top Y的元素,但X越来越低
所以这个排序后的数组看起来像这样:
- [4] { X = 0.0 Y = 0.0}
- [0] { X = 50.0 Y = 0.0}
- [3] { X = 100.0 Y = 0.0}
- [5] { X = 100.0 Y = 50.0}
- [1] { X = 100.0 Y = 100.0}
- [6] { X = 50.0 Y = 100.0}
- [2] { X = 0.0 Y = 100.0}
意思是,最后,如果我要使用这些点来绘制这些点,Graphics.DrawPolygon()
我会得到一个封闭的多边形(在这种情况下是一个矩形),没有线相互交叉。
感谢您的时间