0

我想使用以下代码更改视口 3d 中的所有材质颜色:

    DiffuseMaterial mat = new DiffuseMaterial(new SolidColorBrush(Colors.Red));

        foreach (ModelVisual3D model3d in previewport.Children)
        {

            foreach (GeometryModel3D item in model3d.Content)
            {
                item.Material = mat;
            }
        }

但它得到错误:

      Error  
     foreach statement cannot operate on variables of type 'System.Windows.Media.Media3D.Model3D' because 'System.Windows.Media.Media3D.Model3D' does not contain a public definition for 'GetEnumerator'

请帮忙。谢谢。

4

1 回答 1

1

ModelVisual3D.Content是一个单一的System.Windows.Media.Media3D对象,这就是为什么它抱怨foreach循环。而不是内部循环只是转换ContentGeometryModel3D并更改Material如下:

DiffuseMaterial mat = new DiffuseMaterial(new SolidColorBrush(Colors.Red));

foreach (ModelVisual3D model3d in previewport.Children)
{
    var geometryModel = model3d.Content as GeometryModel3D;
    if (geometryModel != null) geometryModel.Material = mat;
}
于 2013-08-29T10:20:08.510 回答