向 ScreenSpaceLines3D 添加一个点会导致 NullReferenceException
Adding a point to ScreenSpaceLines3D results in 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]);
使它起作用。越来越厉害了
不知何故添加 MainViewPort.Children.Add(lines[i, j]);
解决了问题。没有它,程序会崩溃,但有了它,一切正常。
我不知道这是怎么回事,但就是这样。
我在我的项目中使用 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]);
使它起作用。越来越厉害了
不知何故添加 MainViewPort.Children.Add(lines[i, j]);
解决了问题。没有它,程序会崩溃,但有了它,一切正常。
我不知道这是怎么回事,但就是这样。