Проблема с добавлением Viewport2DVisual3D из кода - PullRequest
2 голосов
/ 06 марта 2010

Я пытаюсь добавить Viewport2DVisual3D в Viewport3D в коде, но изображение не отображается. Любая помощь, понимающая, почему бы не быть оцененной. Ниже приведен код для главного окна.

Достаточно ли просто добавить Viewport2DVisual3D к дочерним элементам Viewport3D для его визуализации?

public partial class Window1 : System.Windows.Window
{

    public Window1()
    {
        InitializeComponent();

        this.Loaded += new RoutedEventHandler(temp);
    }


    public void temp(object sender, RoutedEventArgs e)
    {
        Viewport2DVisual3D test = new Viewport2DVisual3D();
        MeshGeometry3D testGeometry = new MeshGeometry3D();

        Vector3D CameraLookDirection = Main_Target_CameraOR20.LookDirection;

        // Calculate the Positions based on the Camera 
        Point3DCollection myPoint3DCollection = new Point3DCollection();
        myPoint3DCollection.Add(new Point3D(-1, 1, 0));
        myPoint3DCollection.Add(new Point3D(-1, -1, 0));
        myPoint3DCollection.Add(new Point3D(1, -1, 0));
        myPoint3DCollection.Add(new Point3D(1, 1, 0));
        testGeometry.Positions = myPoint3DCollection;

        PointCollection myPointCollection = new PointCollection();
        myPointCollection.Add(new Point(0, 0));
        myPointCollection.Add(new Point(0, 1));
        myPointCollection.Add(new Point(1, 1));
        myPointCollection.Add(new Point(1, 0));
        testGeometry.TextureCoordinates = myPointCollection;

        Int32Collection triangleIndicesCollection = new Int32Collection();
        triangleIndicesCollection.Add(0);
        triangleIndicesCollection.Add(1);
        triangleIndicesCollection.Add(2);
        triangleIndicesCollection.Add(2);
        triangleIndicesCollection.Add(3);
        triangleIndicesCollection.Add(0);
        testGeometry.TriangleIndices = triangleIndicesCollection;


        DiffuseMaterial myDiffuseMaterial = new DiffuseMaterial(Brushes.White);
        Viewport2DVisual3D.SetIsVisualHostMaterial(myDiffuseMaterial, true);

        Transform3DGroup myTransform3DGroup = new Transform3DGroup();
        ScaleTransform3D myScaleTransform3D = new ScaleTransform3D();
        myScaleTransform3D.ScaleX = 2;
        myScaleTransform3D.ScaleY = 2;
        myScaleTransform3D.ScaleZ = 2;

        TranslateTransform3D myTranslateTransform3D = new TranslateTransform3D();

        myTranslateTransform3D.OffsetX = -27;
        myTranslateTransform3D.OffsetY = 13;
        myTranslateTransform3D.OffsetZ = 6;


        RotateTransform3D rotateTransform = new RotateTransform3D()
        {
            Rotation = new AxisAngleRotation3D
            {
                Angle = -50,
                Axis = new Vector3D(0, 1, 0)
            }
        };

        myTransform3DGroup.Children.Add(myTranslateTransform3D);
        myTransform3DGroup.Children.Add(myScaleTransform3D);
        myTransform3DGroup.Children.Add(rotateTransform);
        test.Transform = myTransform3DGroup;

        Button myButton = new Button();
        myButton.Content = "Test Button";

        test.Material = myDiffuseMaterial;
        test.Geometry = testGeometry;
        test.Visual = myButton;

        ZAM3DViewport3D.Children.Add(test);
    }
}

1 Ответ

0 голосов
/ 09 марта 2010

Оказывается, проблема была в значении смещения.Таким образом, достаточно добавить дочерний элемент в Viewport3D для его визуализации.Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...