首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wpf中清除视口

在wpf中清除视口
EN

Stack Overflow用户
提问于 2012-07-10 01:36:30
回答 3查看 1.8K关注 0票数 0

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

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

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-10 02:09:46

我会做这样的事情:第一次在它的开始位置创建立方体:

代码语言:javascript
复制
ModelVisual3D model = new ModelVisual3D();
model.Content = cube;

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

代码语言:javascript
复制
model.Transform = new TranslateTransform3D(X, Y, Z); // model need to be a field in your class

其他可用的变态是:

  1. ScaleTransform3D
  2. RotateTransform3D
  3. MatrixTransform3D
  4. Transform3DGroup
票数 0
EN

Stack Overflow用户

发布于 2015-04-20 19:13:38

我知道这是一个古老的问题,但正确的答案可能会对某些人有所帮助。立方体变黑是因为

this.mainViewportChildren.Clear()

同时删除光源(任一),要使立方体获得原始颜色,必须在代码中添加类似以下内容:

this.mainViewport.Children.Add(new ModelVisual3D() { Content = new AmbientLight(Colors.White) });

票数 0
EN

Stack Overflow用户

发布于 2020-10-15 19:56:13

代码语言:javascript
复制
//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); 
    }                   
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11400180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档