Този код работи добре:
var newArray = new Rectangle[newHeight, newWidth];
for (int x = 0; x < newWidth; x++)
for (int y = 0; y < newHeight; y++)
newArray[y, x] = (x >= width) || (y >= height) ? Rectangle.Empty : tiles[y, x];
Но нямам много късмет да го заменя с Array.Copy. По принцип, ако преоразмереният масив е по-голям, той просто добавя празни правоъгълници към краищата. Ако е по-малък, трябва просто да отрежете краищата.
Когато правите това:
Array.Copy(tiles, newArray, newWidth * newHeight);
Това обърква масива и цялото му съдържание става неподредено и не запазва оригиналния си индекс. Може би просто имам мозъчен удар или нещо подобно?