有几个问题需要回答.
我无法找到如何分配点数组.
那么,分配点数组与任何其他类型的数组没有区别:
const int size = 100;
Point[] pointArray = new Point[size];
Run Code Online (Sandbox Code Playgroud)
但阵列缺少一些"便利".例如,它们具有您需要在初始化(分配)时指定的固定大小.如果您需要更多空间,则必须手动创建一个新的(更大的)数组并将所有值从旧的复制到新的.
这就是为什么几乎在任何地方你都可以使用数组,你可能最好使用一个列表:
List<Point> pointList = new List<Point>();
Run Code Online (Sandbox Code Playgroud)
然后,无论您何时需要传递数组,都可以通过以下方式获取:
Point[] pointArray = pointList.ToArray();
Run Code Online (Sandbox Code Playgroud)
动态收集分配的点数组中的x和y值
使用列表时,这很简单:
pointList.Add(new Point(x, y));
Run Code Online (Sandbox Code Playgroud)
我们不知道你是怎么填写您float x[]和float y[].如果可能的话,我首先没有这两个单独的数组,只需pointList从头开始使用.有一点需要注意:System.Drawing.Point仅适用于int值,而不适用于float值.所以我假设你打算收集int坐标值.
从float数组x和y动态创建点数组
如果您无法更改坐标的集合并且必须使用这些数组,则可以将它们"压缩"在一起,如下所示:
IEnumerable<Point> points = x.Zip(y, (xCoord, yCoord) =>
(new Point((int)xCoord, (int)yCoord));
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道您需要一个数组:
Point[] pointArray = x.Zip(y, (xCoord, yCoord) =>
(new Point((int)xCoord, (int)yCoord)).ToArray();
Run Code Online (Sandbox Code Playgroud)
为此,您需要能够使用System.Linq(换句话说,高于.Net 2.0).
如果你不能使用Linq,你必须"手动".就像是:
int size = Math.Min(x.Length, y.Length);
Point[] pointArray = new Point[size];
for (int index = 0; index < size; index++)
{
pointArray[index] = new Point((int)x[index], (int)y[index]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6567 次 |
| 最近记录: |