Проблема, которую вы описываете, кажется маловероятной и, вероятно, связана с другой проблемой вашего кода. Глядя на этот простой тест, вы можете убедиться, что на самом деле созданы одни и те же коллекции:
PointCollection collection1 = new PointCollection(new Point[] { new Point(1, 1), new Point(2, 2) });
PointCollection collection2 = new PointCollection(collection1);
for (int i = 0; i < collection2.Count; i++) {
if (collection1[i] != collection2[i])
throw new InvalidOperationException();
}
Что касается присвоения свойству Points, то многоугольнику было бы все равно, как была создана коллекция PointsCollection.
Обе эти части кода дают одинаковые результаты:
poly.Points = new PointCollection(new Point[] {
new Point(100, 100),
new Point(200, 200)
});
и
var coll = new PointCollection();
coll.Add(new Point(100, 100));
coll.Add(new Point(200, 200));
poly.Points = new PointCollection(coll);
Имейте в виду, что следующее отличается:
var collection = new PointCollection(256);
var array = new Point[256];
Коллекция содержит 0 элементов, но в ней есть место для 256 предварительно выделенных объектов. Массив содержит 256 элементов и будет когда-либо иметь место только для 256 элементов.