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内側のループの代わりにContentasをキャストして、以下のようGeometryModel3Dに変更します。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 に答える