wpf中的清晰视口

时间:2012-07-09 17:36:30

标签: wpf viewport

我创建了一个模型(立方体)并将其添加到我的视口中,它可以正常工作而没有任何问题。

this.mainViewport.Children.Add(模型);

每当我使用下面的代码时,立方体变成黑色而不是它的原始颜色。

this.mainViewport.Children.Clear(); this.mainViewport.Children.Add(模型);

我需要清除视口,因为我在下一秒将立方体添加到另一个位置。任何解决该问题的建议都将受到高度赞赏。

3 个答案:

答案 0 :(得分:0)

我会这样做: 首次在其开始位置创建多维数据集:

ModelVisual3D model = new ModelVisual3D();
model.Content = cube;

然后在计时器中我会用新位置改变变换:

model.Transform = new TranslateTransform3D(X, Y, Z); // model need to be a field in your class

其他可用的转换是:

  
      
  1. ScaleTransform3D

  2.   
  3. RotateTransform3D

  4.   
  5. MatrixTransform3D

  6.   
  7. Transform3DGroup

  8.   

答案 1 :(得分:0)

我知道这是一个老问题,但正确答案可能对某人有所帮助。立方体变黑,因为this.mainViewportChildren.Clear()
删除光源(任何一个),使立方体获得原始颜色,你必须添加到你的代码,如:  this.mainViewport.Children.Add(new ModelVisual3D() { Content = new AmbientLight(Colors.White) });

答案 2 :(得分:0)

//if you use ScreenSpaceLines3D
for (int i = _mainViewport.Children.Count - 1; i >= 0; i--)
{
    ModelVisual3D modelVisual3D = ModelVisual3D)_mainViewport.Children[i];
    if (modelVisual3D is ScreenSpaceLines3D)
    {
        ScreenSpaceLines3D line3D = ScreenSpaceLines3D)_mainViewport.Children[i];
        line3D.Points.Clear();                             
        continue;

    }
    if (modelVisual3D.Content is DirectionalLight == false)   
    {                
       mainViewport.Children.Remove(modelVisual3D); 
    }                   
}