Добавление точки к 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]); решил проблему. Без него программа вылетает, но с ним все работает нормально.

Я не знаю, как это работает, но это все.

Другие вопросы по тегам