Есть несколько вопросов, чтобы ответить.
Я не мог узнать, как выделить точечный массив.
Ну, нет никакой разницы в распределении массива точек, чем сделать это для любого другого вида массива:
const int size = 100;
Point[] pointArray = new Point[size];
Но массивы отсутствуют некоторые «удобства». Например, они имеют фиксированный размер, который необходимо указать в момент инициализации (выделения). И если вам нужно больше места, вам нужно вручную создать новый (больший) массив и скопировать все значения из старого в новое.
Вот почему почти везде будет работать с массивом, вы, вероятно, лучше использовать список:
List<Point> pointList = new List<Point>();
А потом, где бы вы на самом деле нужно передать массив, вы можете просто получить его с помощью :
Point[] pointArray = pointList.ToArray();
динамически собирает х и у значений в массиве выделенной точки
При работе со списком, это так же просто, как:
pointList.Add(new Point(x, y));
Мы не знаем, как заполнить ваш float x[]
и float y[]
. Если возможно, у меня не было бы этих двух отдельных массивов в первую очередь и просто используйте pointList
с самого начала. С одной оговоркой: System.Drawing.Point работает только с значениями int
, а не с float
значениями. Поэтому я предполагаю, что вы хотели собрать int
значения для координат.
динамически создать массив точек из флоат массивов х и у
Если вы не можете изменить коллекцию координат и имеют работать с этими массивами, вы можете «молния» их вместе как это:
IEnumerable<Point> points = x.Zip(y, (xCoord, yCoord) =>
(new Point((int)xCoord, (int)yCoord));
Или, если вы знаете, нужен массив:
Point[] pointArray = x.Zip(y, (xCoord, yCoord) =>
(new Point((int)xCoord, (int)yCoord)).ToArray();
Для этого вам необходимо использовать 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]);
}
Единственный способ присоединиться к двум массивам вместе, но тогда вы бы не стали лучше со списком точек для начала? Что вы пробовали? – Sayse
Я ничего не мог попробовать, кроме поиска. То, что я пытаюсь применить, сначала выделяет массив точек и динамически собирает значения x и y в выделенном массиве точек в цикле. Но до сих пор я не мог узнать, как выделить точечный массив. (почему минус голосование за?) – Lati
Вы ищете [Zip] (https://msdn.microsoft.com/library/dd267698.aspx) (LINQ)? - Как в (untested): 'xArray.Zip (yArray, (x, y) => (новая точка (x, y))). ToArray()' – Corak