所以我使用http://3dtools.codeplex.com/提供的ScreenSpaceLines3D类绘制了很多行
我可以通过定义
来为我的视口绘制线条Point3D point0 = new Point3D(0, 0, 0);
Point3D point1 = new Point3D(5, 5, 0);
Point3D point2 = new Point3D(5, 5.5, 0);
并且在button_click方法中,基本上绘制了一堆像
这样的行ScreenSpaceLines3D wireframe = new ScreenSpaceLines3D();
wireframe.Points.Add(point0);
wireframe.Points.Add(point1);
wireframe.Points.Add(point2);
wireframe.Color = Colors.LightBlue;
wireframe.Thickness = 5;
this.mainViewport.Children.Add(wireframe);
我还添加了一个point1.Z += 2;
,以便在每次点击后看到行中的更改。
我想看到只有相同的一组线移动,但新的线条组最终在每次点击后得到画面。我只需要使用更新的点集刷新/重绘相同的集合。我尝试使用InvalidateVisual();
和InvalidateArrange();
,但没有效果。
请指教!!
答案 0 :(得分:0)
没有Invalidate功能。您必须清除ScreenSpaceLine3d点,然后更新点。
public MainWindow()
{
ScreenSpaceLines3D wireframe = new ScreenSpaceLines3D();
wireframe.Color = Colors.LightBlue;
wireframe.Thickness = 5;
this.mainViewport.Children.Add(wireframe);
}
public void CustomInvalidate( Point3DCollection point)
{
if (wireframe!= null)
{
wireframe.Points.Clear();
}
wireframe.Points.Add(point[0]);
wireframe.Points.Add(point[1]);
wireframe.Points.Add(point[2]);
}