private void Init() { NCartesianChart chart = (NCartesianChart)nChartControl.Charts[0]; //3d график NTriangulatedSurfaceSeries surface = new NTriangulatedSurfaceSeries(); //создаём треугольную поверхность //подключаем зум NZoomTool zt = new NZoomTool(); zt.BeginDragMouseCommand = new NMouseCommand(MouseAction.Wheel, MouseButton.Middle, 0); zt.ZoomStep = 20; //зум инструмент добавляем в контролу nChartControl.Controller.Tools.Add(zt); //доп. инструменты подключаем для управления (вращения и приближения) nChartControl.Controller.Tools.Add(new NSelectorTool()); nChartControl.Controller.Tools.Add(new NTrackballTool()); //очень важная nChartControl.Settings.JitterMode = JitterMode.Enabled; nChartControl.Settings.JitteringSteps = 1; //настройка 3d график //включаем поддержку 3d chart.Enable3D = true; chart.Width = 50; chart.Height = 50; chart.Depth = 50; chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted); //добавляем 3d поверхность в 3d график chart.Series.Add(surface); //настройки для поверхности surface.FrameMode = SurfaceFrameMode.Contour; //сетка или контур surface.Name = dataType; //название графика //настройка названия осей chart.Axis(StandardAxis.PrimaryY).ScaleConfigurator.Title.Text = "Высота"; //название оси Y chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator.Title.Text = "Ширина"; //название оси X NStandardScaleConfigurator scale = (NStandardScaleConfigurator)chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator; chart.Axis(StandardAxis.Depth).ScaleConfigurator.Title.Text = "Долгота"; //название оси Z NStandardScaleConfigurator scaler = (NStandardScaleConfigurator)chart.Axis(StandardAxis.Depth).ScaleConfigurator; //заливка поверхности surface.FillMode = SurfaceFillMode.Zone; AddData(surface); }
private void MouseModeComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { NTool tool = null; bool bEnableCreatePointControls = false; switch (MouseModeComboBox.SelectedIndex) { // Create Point case 0: bEnableCreatePointControls = true; break; // Trackball case 1: tool = new NTrackballTool(); break; // Zoom case 2: tool = new NZoomTool(); break; // Offset case 3: tool = new NOffsetTool(); break; } nChartControl1.Controller.Tools.Clear(); if (tool != null) { nChartControl1.Controller.Tools.Add(tool); } CreatePointAtPlaneComboBox.Enabled = bEnableCreatePointControls; if (CreatePointAtPlaneComboBox.SelectedIndex == 0) { XZPlaneValueNumericUpDown.Enabled = bEnableCreatePointControls; XYPlaneValueNumericUpDown.Enabled = false; } else { XZPlaneValueNumericUpDown.Enabled = false; XYPlaneValueNumericUpDown.Enabled = bEnableCreatePointControls; } }
public void generateSurface() { NCartesianChart chart; //nChartControl1.Clear(); NTriangulatedSurfaceSeries surface; NZoomTool zt = new NZoomTool(); zt.BeginDragMouseCommand = new NMouseCommand(MouseAction.Wheel, MouseButton.Middle, 0); zt.ZoomStep = 20; nChartControl1.Controller.Tools.Add(zt); nChartControl1.Controller.Tools.Add(new NSelectorTool()); nChartControl1.Controller.Tools.Add(new NTrackballTool()); nChartControl1.Settings.JitterMode = JitterMode.Enabled; nChartControl1.Settings.JitteringSteps = 1; chart = (NCartesianChart)nChartControl1.Charts[0]; chart.Enable3D = true; chart.Width = chart.Height = chart.Depth = 50; chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted); surface = new NTriangulatedSurfaceSeries(); chart.Series.Add(surface); surface.FrameMode = SurfaceFrameMode.Mesh; surface.FillMode = SurfaceFillMode.Zone; for (int i = 0; i < resultX.Count(); i++) { surface.XValues.Add(resultX[i]); surface.ZValues.Add(resultZ[i]); surface.Values.Add(resultY[i]); } }
private void DragModeComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { NDragTool dragTool = null; if (nChartControl1.Controller.Tools.Count > 0) { dragTool = nChartControl1.Controller.Tools[0] as NDragTool; } if (dragTool != null) { dragTool.Drag -= new EventHandler(OnViewChange); dragTool = null; } nChartControl1.Controller.Tools.Clear(); switch (DragModeComboBox.SelectedIndex) { // Trackball case 1: dragTool = new NTrackballTool(); break; // Zoom case 2: dragTool = new NZoomTool(); break; // Offset case 3: dragTool = new NOffsetTool(); break; } if (dragTool != null) { dragTool.Drag += new EventHandler(OnViewChange); nChartControl1.Controller.Tools.Add(dragTool); } }
public static NChartControl GenerateChart(string func) { NZoomTool zt = new NZoomTool(); zt.BeginDragMouseCommand = new NMouseCommand(MouseAction.Wheel, (MouseButton)System.Windows.Forms.MouseButtons.Middle, 0); zt.ZoomStep = 16; NChartControl nChartControl1 = new NChartControl(); nChartControl1.Controller.Tools.Add(new NSelectorTool()); nChartControl1.Controller.Tools.Add(new NTrackballTool()); nChartControl1.Controller.Tools.Add(zt); nChartControl1.Legends[0].Mode = LegendMode.Disabled; NTriangulatedSurfaceSeries triangulatedSurface = new NTriangulatedSurfaceSeries(); triangulatedSurface.UsePreciseGeometry = true; triangulatedSurface.AutomaticPalette = true; triangulatedSurface.SyncPaletteWithAxisScale = false; triangulatedSurface.PaletteSteps = 6; triangulatedSurface.FrameMode = SurfaceFrameMode.Mesh; NCartesianChart chart = (NCartesianChart)nChartControl1.Charts[0]; chart.Enable3D = true; chart.Width = width; chart.Depth = depth; chart.Height = height; chart.BoundsMode = BoundsMode.Fit; chart.Projection.Type = ProjectionType.Perspective; chart.Projection.Elevation = 30; chart.Projection.Rotation = -60; chart.LightModel.SetPredefinedLightModel(PredefinedLightModel.NorthernLights); chart.Series.Add(triangulatedSurface); string[] f2 = func.Split(Char.Parse("=")); if (f2.Length == 2) { if (f2[0] == "y" || f2[0] == "f(x)") // f-cja w postaci y=costam { float x, z; try { for (x = startx; x < width; x++) //x { for (z = startz; z < depth; z++) //z { NCalc.Expression ex = new NCalc.Expression(f2[1]); ex.Parameters["x"] = x; ex.Parameters["z"] = z; ex.EvaluateParameter += delegate(string name, ParameterArgs args) { if (name == "x") { args.Result = x; } else if (name == "z") { args.Result = z; } }; var y = ex.Evaluate(); triangulatedSurface.XValues.Add(x); triangulatedSurface.ZValues.Add(z); triangulatedSurface.Values.Add(y); } } } catch (Exception e) { MessageBox.Show("Sprawdź, czy poprawnie wpisałeś równanie!", "Nie pykło"); return(null); } } else { MessageBox.Show("Niepoprawny zapis funkcji!", "Nie pykło"); } } else { MessageBox.Show("Niepoprawny zapis funkcji!", "Nie pykło"); } return(nChartControl1); }