Добавление точки к ScreenSpaceLines3D приводит к исключению NullReferenceException
Я использую SharpenLines3d
в моих проектах рисовать линии, чтобы соединить объекты в моем Viewport3D
, Проблема в том, когда я добавляю очки ScreenSpaceLined3D
программа вылетает, вот так:
Сбой не в этих строках, когда я добавляю очки ScreenSpaceLines3D
так что это что-то внутри библиотеки, наверное.
Вот мой код:
for (int i = 0; i < MAX + 1; i++)
{
...
var bounds = this.points[i].Bounds;
var x = bounds.X + (bounds.SizeX / 2);
var y = bounds.Y + (bounds.SizeY / 2);
var z = bounds.Z + (bounds.SizeZ / 2);
coords[i] = new Point3D(x, y, z);
for (int j = 0; j < i; j++)
{
lines[i, j] = new ScreenSpaceLines3D();
lines[i, j].Color = Colors.Red;
lines[i, j].Thickness = 6;
lines[i, j].Points.Add(coords[i]);
lines[i, j].Points.Add(coords[j]);
}
}
Я уверен, что я не прохожу null
в качестве аргумента Add
функция (я пытался заменить мой Add
строка с этим: lines[i, j].Points.Add(new Point3D(0, 0, 0));
, и это все еще не сработало).
И я закомментировал весь код, который использует lines
переменная, поэтому эта переменная используется только когда куча новых ScreenSpaceLines3D
создано. Но моя программа вылетает не при инициализации.
Когда я закомментирую 2 строки кода, где я добавляю точки к линиям, программа начинает работать нормально, но когда я добавляю это снова, результат такой же, как на скриншоте.
Как с этим бороться?
UPD: Добавление MainViewPort.Children.Add(lines[i, j]);
после добавления очков заработало. Становится все больше и больше ярости.
1 ответ
Как-то добавляя MainViewPort.Children.Add(lines[i, j]);
решил проблему. Без него программа вылетает, но с ним все работает нормально.
Я не знаю, как это работает, но это все.