如何在WPF中重绘3D内容

时间:2013-08-12 16:05:46

标签: wpf visual-studio-2010 c#-4.0 3d drawing

所以我使用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();,但没有效果。

请指教!!

1 个答案:

答案 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]);  
}