void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 30.0; const double dIntervalZ = 30.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = (x * x) - (z * z); y += 200 * Math.Sin(x / 4.0) * Math.Cos(z / 4.0); surface.Data.SetValue(i, j, y); } } }
private void FillModeComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; switch (FillModeComboBox.SelectedIndex) { case 0: surface.FillMode = SurfaceFillMode.Uniform; break; case 1: surface.FillMode = SurfaceFillMode.ZoneTexture; surface.SmoothPalette = false; surface.PaletteSteps = 8; break; case 2: surface.FillMode = SurfaceFillMode.ZoneTexture; surface.SmoothPalette = true; surface.PaletteSteps = 7; break; } nChartControl1.Refresh(); }
private void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 8.0; const double dIntervalZ = 8.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = 0; for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = Math.Sin(x * 1.2) * Math.Sin(z * 1.2); if (y < 0) { y = -y; } surface.Data.SetValue(i, j, y); } } }
private void UpdateSurfaceData() { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; TimeSpan span = startTime - DateTime.Now; double t = 0.002 * span.TotalMilliseconds; double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 50.0; const double dIntervalZ = 50.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = -Math.Sin(t + x * z * 0.04) * Math.Cos(t + x * 0.4); surface.Data.SetValue(i, j, y); } } }
private void CreateSurface(NChart chart) { NGridSurfaceSeries surface = new NGridSurfaceSeries(); chart.Series.Add(surface); surface.Name = "Surface"; surface.FillMode = SurfaceFillMode.Uniform; surface.FrameMode = SurfaceFrameMode.None; surface.ShadingMode = ShadingMode.Smooth; surface.Data.SetGridSize(30, 30); surface.SyncPaletteWithAxisScale = false; surface.ValueFormatter.FormatSpecifier = "0.00"; Color color = Color.FromArgb(190, 130, 189); NFillStyle fillStyle = new NColorFillStyle(); NMaterialStyle material = fillStyle.MaterialStyle; material.Ambient = color; material.Diffuse = color; material.Specular = Color.FromArgb(120, 120, 120); material.Emissive = Color.Black; material.Shininess = 10; surface.FillStyle = fillStyle; FillSurfaceData(surface); }
private void GenerateSurfaceData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 50.0; const double dIntervalZ = 50.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = (x * z / 64.0) - Math.Sin(z / 2.4) * Math.Cos(x / 2.4); y = Math.Abs(y); double tmp = (1 - x * x - z * z); y -= tmp * tmp * 0.000006; surface.Data.SetValue(i, j, y); } } }
private void HasFillingCheckBox_CheckedChanged(object sender, EventArgs e) { NGridSurfaceSeries gridSurface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; gridSurface.FillMode = HasFillingCheckBox.Checked ? SurfaceFillMode.CustomColors : SurfaceFillMode.None; nChartControl1.Refresh(); }
private void SmoothShadingCheckBox_CheckedChanged(object sender, EventArgs e) { NGridSurfaceSeries gridSurface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; gridSurface.ShadingMode = SmoothShadingCheckBox.Checked ? ShadingMode.Smooth : ShadingMode.Flat; nChartControl1.Refresh(); }
private void GenerateWaves() { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 30.0; const double dIntervalZ = 30.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = CalulateWavesAtPoint(x, z); surface.Data.SetValue(i, j, y); } } }
private void UpdateSurface() { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; switch (paletteModeCombo.SelectedIndex) { case 0: surface.AutomaticPalette = true; surface.SyncPaletteWithAxisScale = false; paletteStepsCombo.IsEnabled = true; break; case 1: surface.AutomaticPalette = true; surface.SyncPaletteWithAxisScale = true; paletteStepsCombo.IsEnabled = false; break; case 2: surface.AutomaticPalette = false; paletteStepsCombo.IsEnabled = false; break; } if ((bool)smoothPaletteCheck.IsChecked) { surface.SmoothPalette = true; surface.PaletteSteps = paletteStepsCombo.SelectedIndex + 1; } else { surface.SmoothPalette = false; surface.PaletteSteps = paletteStepsCombo.SelectedIndex + 2; } }
private void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 10.0; const double dIntervalZ = 10.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = 10 - Math.Sqrt((x * x) + (z * z) + 2); y += 3.0 * Math.Sin(x) * Math.Cos(z); surface.Data.SetValue(i, j, y); } } }
private void SurfaceSizeCombo_SelectedIndexChanged(object sender, EventArgs e) { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; string heightMapName = ""; switch (surfaceSizeCombo.SelectedIndex) { case 0: heightMapName = "HeightMap0500.png"; break; case 1: heightMapName = "HeightMap1024.png"; break; default: return; } Bitmap bitmap = NResourceHelper.BitmapFromResource(this.GetType(), heightMapName, "Nevron.Examples.Chart.WinForm.Resources"); surface.Data.InitFromBitmap(bitmap); bitmap.Dispose(); nChartControl1.Refresh(); }
void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 20.0; const double dIntervalZ = 20.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = Math.Sqrt((x * x) + (z * z) + 2); y -= 0.08 * Math.Sqrt(Math.Abs(Math.Sinh(x))); if (x < 0) { y += 0.11 * x * x; } surface.Data.SetValue(i, j, y); } } }
private void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 30.0; const double dIntervalZ = 30.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = (x * z / 64.0) - Math.Sin(z / 2.4) * Math.Cos(x / 2.4); y = 10 * Math.Sqrt(Math.Abs(y)); if (y <= 0) { y = 1 + Math.Cos(x / 2.4); } surface.Data.SetValue(i, j, y); } } }
private void FillModeCombo_SelectedIndexChanged(object sender, System.EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; switch (fillModeCombo.SelectedIndex) { case 0: surface.FillMode = SurfaceFillMode.None; smoothShadingCheck.Enabled = false; break; case 1: surface.FillMode = SurfaceFillMode.Uniform; smoothShadingCheck.Enabled = true; break; case 2: surface.FillMode = SurfaceFillMode.Zone; smoothShadingCheck.Enabled = true; break; } nChartControl1.Refresh(); }
private void SmoothShadingCheckBox_Clicked(object sender, System.Windows.RoutedEventArgs e) { NGridSurfaceSeries gridSurface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; gridSurface.ShadingMode = SmoothShadingCheckBox.IsChecked.Value ? ShadingMode.Smooth : ShadingMode.Flat; nChartControl1.Refresh(); }
private void HasFillingCheckBox_Clicked(object sender, System.Windows.RoutedEventArgs e) { NGridSurfaceSeries gridSurface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; gridSurface.FillMode = HasFillingCheckBox.IsChecked.Value ? SurfaceFillMode.CustomColors : SurfaceFillMode.None; nChartControl1.Refresh(); }
private void GridSizeComboBox_SelectedIndexChanged(object sender, EventArgs e) { int gridSize = 0; switch (GridSizeComboBox.SelectedIndex) { case 0: gridSize = 250; break; case 1: gridSize = 500; break; case 2: gridSize = 1000; break; } NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.Data.SetSize(gridSize, gridSize); GenerateWaves(); }
void FillData(NGridSurfaceSeries surface) { double y, x, z; int nCountX = surface.Data.GridSizeX; int nCountZ = surface.Data.GridSizeZ; const double dIntervalX = 8.0; const double dIntervalZ = 8.0; double dIncrementX = (dIntervalX / nCountX); double dIncrementZ = (dIntervalZ / nCountZ); z = -(dIntervalZ / 2); for (int j = 0; j < nCountZ; j++, z += dIncrementZ) { x = -(dIntervalX / 2); for (int i = 0; i < nCountX; i++, x += dIncrementX) { y = Math.Log(Math.Abs(x) * Math.Abs(z)); if (y > -3) { surface.Data.SetValue(i, j, y); } else { surface.Data.SetValue(i, j, DBNull.Value); } } } }
private void SurfaceSizeComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; string heightMapName = ""; switch (SurfaceSizeComboBox.SelectedIndex) { case 0: heightMapName = "HeightMap0500.png"; break; case 1: heightMapName = "HeightMap1024.png"; break; default: return; } using (Bitmap bitmap = NResourceHelper.BitmapFromResource(this.GetType(), heightMapName, "Nevron.Examples.Chart.Wpf.Resources.Images")) { surface.Data.InitFromBitmap(bitmap); } nChartControl1.Refresh(); }
private void PaletteLegendModeComboBox_SelectedIndexChanged(object sender, EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.Legend.PaletteLegendMode = (PaletteLegendMode)PaletteLegendModeComboBox.SelectedIndex; nChartControl1.Refresh(); }
private void PositionModeCombo_SelectedIndexChanged(object sender, System.EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.PositionMode = (SurfacePositionMode)positionModeCombo.SelectedIndex; nChartControl1.Refresh(); }
private void CustomValueScroll_ValueChanged(object sender, Nevron.UI.WinForm.Controls.ScrollBarEventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.PositionValue = customValueScroll.Value; nChartControl1.Refresh(); }
private void CustomValueScrollBar_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs <double> e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.PositionValue = CustomValueScrollBar.Value * 20.0f; nChartControl1.Refresh(); }
private void DrawContourBorderCheckBox_CheckedChanged(object sender, EventArgs e) { NGridSurfaceSeries surface = (NGridSurfaceSeries)nChartControl1.Charts[0].Series[0]; surface.DrawContourBorder = DrawContourBorderCheckBox.Checked; nChartControl1.Refresh(); }
private void EnableGPURenderingCheckBox_CheckedChanged(object sender, EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.EnableShaderRendering = EnableShaderRenderingCheckBox.Checked; nChartControl1.Refresh(); }
public override void Initialize() { base.Initialize(); // Enable GPU acceleration nChartControl1.Settings.RenderSurface = RenderSurface.Window; nChartControl1.Controller.Tools.Add(new NPanelSelectorTool()); nChartControl1.Controller.Tools.Add(new NTrackballTool()); // set a chart title NLabel title = new NLabel("Surface With Empty Data Points"); title.TextStyle.FontStyle = new NFontStyle("Times New Roman", 18, FontStyle.Italic); title.TextStyle.FillStyle = new NColorFillStyle(GreyBlue); // setup chart NChart chart = nChartControl1.Charts[0]; chart.Enable3D = true; chart.Width = 60.0f; chart.Depth = 60.0f; chart.Height = 25.0f; chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted); chart.LightModel.SetPredefinedLightModel(PredefinedLightModel.ShinyTopLeft); // setup axes NOrdinalScaleConfigurator ordinalScale = (NOrdinalScaleConfigurator)chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator; ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Floor, true); ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Back, true); ordinalScale.DisplayDataPointsBetweenTicks = false; ordinalScale = (NOrdinalScaleConfigurator)chart.Axis(StandardAxis.Depth).ScaleConfigurator; ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Floor, true); ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Left, true); ordinalScale.DisplayDataPointsBetweenTicks = false; // add the surface series NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series.Add(SeriesType.GridSurface); surface.Name = "Surface"; surface.Legend.Mode = SeriesLegendMode.SeriesLogic; surface.PositionValue = 10.0; surface.Data.SetGridSize(40, 40); surface.SyncPaletteWithAxisScale = false; surface.PaletteSteps = 8; surface.ValueFormatter.FormatSpecifier = "0.000"; surface.FillMode = SurfaceFillMode.ZoneTexture; FillData(surface); // apply layout ConfigureStandardLayout(chart, title, nChartControl1.Legends[0]); smoothShadingCheck.Checked = true; }
/// <summary> /// Called to initialize the example /// </summary> /// <param name="chartControl"></param> public override void Create() { // set a chart title NLabel title = nChartControl1.Labels.AddHeader("Wireframe Surface"); title.TextStyle.FontStyle = new NFontStyle("Times New Roman", 18, System.Drawing.FontStyle.Italic); title.TextStyle.FillStyle = new NColorFillStyle(GreyBlue); // setup chart m_Chart = nChartControl1.Charts[0]; m_Chart.Enable3D = true; m_Chart.Width = 60.0f; m_Chart.Depth = 60.0f; m_Chart.Height = 25.0f; m_Chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted); m_Chart.LightModel.SetPredefinedLightModel(PredefinedLightModel.ShinyTopLeft); nChartControl1.Controller.Tools.Add(new NTrackballTool()); // setup axes NOrdinalScaleConfigurator ordinalScale = (NOrdinalScaleConfigurator)m_Chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator; ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Floor, true); ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Back, true); ordinalScale.DisplayDataPointsBetweenTicks = false; ordinalScale = (NOrdinalScaleConfigurator)m_Chart.Axis(StandardAxis.Depth).ScaleConfigurator; ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Floor, true); ordinalScale.MajorGridStyle.SetShowAtWall(ChartWallType.Left, true); ordinalScale.DisplayDataPointsBetweenTicks = false; // add the surface series m_Surface = (NGridSurfaceSeries)m_Chart.Series.Add(SeriesType.GridSurface); m_Surface.Name = "Surface"; m_Surface.FillMode = SurfaceFillMode.None; m_Surface.FrameMode = SurfaceFrameMode.Mesh; m_Surface.Data.SetGridSize(30, 30); m_Surface.SyncPaletteWithAxisScale = false; m_Surface.ValueFormatter.FormatSpecifier = "0.00"; m_Surface.FrameColorMode = SurfaceFrameColorMode.Zone; m_Surface.Legend.Mode = SeriesLegendMode.SeriesLogic; m_Surface.SmoothPalette = true; m_Surface.PaletteSteps = 7; m_Surface.Legend.Format = "<zone_value>"; FillData(); nChartControl1.Controller.Tools.Add(new NPanelSelectorTool()); nChartControl1.Controller.Tools.Add(new NTrackballTool()); // apply layout ConfigureStandardLayout(m_Chart, title, nChartControl1.Legends[0]); // inti form controls SmoothPaletteCheckBox.IsChecked = true; PaletteFrameCheckBox.IsChecked = true; AntialiasingCheckBox.IsChecked = true; }
private void GenerateDataButton_Click(object sender, EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; GenerateXValues(surface); GenerateZValues(surface); nChartControl1.Refresh(); }
private void FrameModeCombo_SelectedIndexChanged(object sender, System.EventArgs e) { NChart chart = nChartControl1.Charts[0]; NGridSurfaceSeries surface = (NGridSurfaceSeries)chart.Series[0]; surface.FrameMode = (SurfaceFrameMode)frameModeCombo.SelectedIndex; nChartControl1.Refresh(); // form controls frameColorModeCombo.Enabled = (surface.FrameMode != SurfaceFrameMode.None); }