private void DisposeBackgroundThread()
 {
     if ((threadController != null))
     {
         threadController.Dispose();
     }
     threadController = null;
 }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            // MVVM made simple : DataContext is current object
            this.DataContext = this;

            // Create the interop host control.
            System.Windows.Forms.Integration.WindowsFormsHost fromHost =
                new System.Windows.Forms.Integration.WindowsFormsHost();

            //// Create the Renderer 3D control.
            Renderer3D renderer = new Renderer3D();

            // Assign the Renderer 3D control as the host control's child.
            fromHost.Child = renderer;
            gridContent.Children.Add(fromHost);

            // Create the chart and embed the surface within
            dataChart = new nzy3D.Chart.Chart(renderer, Quality.Nicest);
            axeLayout = dataChart.AxeLayout;

            // Create a mouse control
            nzy3D.Chart.Controllers.Mouse.Camera.CameraMouseController mouse = new nzy3D.Chart.Controllers.Mouse.Camera.CameraMouseController();
            mouse.addControllerEventListener(renderer);
            dataChart.addController(mouse);

            // This is just to ensure code is reentrant (used when code is not in Form_Load but another reentrant event)
            DisposeBackgroundThread();

            // Create a thread to control the camera based on mouse movements
            threadController = new nzy3D.Chart.Controllers.Thread.Camera.CameraThreadController();
            threadController.addControllerEventListener(renderer);
            mouse.addSlaveThreadController(threadController);
            dataChart.addController(threadController);
            //threadController.Start();

            // Associate the chart with current control
            renderer.setView(dataChart.View);
        }
예제 #3
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // MVVM made simple : DataContext is current object
            this.DataContext = this;

            // Create the interop host control.
            System.Windows.Forms.Integration.WindowsFormsHost host =
                new System.Windows.Forms.Integration.WindowsFormsHost();

            // Create the Renderer 3D control.
            Renderer3D renderer = new Renderer3D();

            // Assign the Renderer 3D control as the host control's child.
            host.Child = renderer;

            // Add the interop host control to the Grid
            // control's collection of child controls.
            this.MainGrid.Children.Add(host);

            // Create a range for the graph generation
            Range range = new Range(-150, 150);
            int   steps = 50;

            // Build a nice surface to display with cool alpha colors
            // (alpha 0.8 for surface color and 0.5 for wireframe)
            Shape surface = Builder.buildOrthonomal(new OrthonormalGrid(range, steps, range, steps), new MyMapper());

            surface.ColorMapper        = new ColorMapper(new ColorMapRainbow(), surface.Bounds.zmin, surface.Bounds.zmax, new Color(1, 1, 1, 0.8));
            surface.FaceDisplayed      = true;
            surface.WireframeDisplayed = true;
            surface.WireframeColor     = Color.CYAN;
            surface.WireframeColor.mul(new Color(1, 1, 1, 0.5));

            // Create the chart and embed the surface within
            Chart chart = new Chart(renderer, Quality.Nicest);

            chart.Scene.Graph.Add(surface);
            axeLayout         = chart.AxeLayout;
            DisplayXTicks     = true;
            DisplayXAxisLabel = true;
            DisplayYTicks     = true;
            DisplayYAxisLabel = true;
            DisplayZTicks     = true;
            DisplayZAxisLabel = true;
            DisplayTickLines  = true;

            // Create a mouse control
            nzy3D.Chart.Controllers.Mouse.Camera.CameraMouseController mouse = new nzy3D.Chart.Controllers.Mouse.Camera.CameraMouseController();
            mouse.addControllerEventListener(renderer);
            chart.addController(mouse);

            // This is just to ensure code is reentrant (used when code is not in Form_Load but another reentrant event)
            DisposeBackgroundThread();

            // Create a thread to control the camera based on mouse movements
            t = new nzy3D.Chart.Controllers.Thread.Camera.CameraThreadController();
            t.addControllerEventListener(renderer);
            mouse.addSlaveThreadController(t);
            chart.addController(t);
            t.Start();

            // Associate the chart with current control
            renderer.setView(chart.View);
        }