我在我的项目中使用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]);
使其有效。它越来越激烈了。
答案 0 :(得分:0)
以某种方式添加MainViewPort.Children.Add(lines[i, j]);
解决了这个问题。没有它,程序崩溃,但有了它,一切正常。
我不知道这是如何运作的,但就是这样。