public void UpdateDisplay(bool bArea, GCDConsoleLib.GCD.UnitGroup displayUnits = null) { // Store the display units so that the user can switch between area and volume easily if (displayUnits != null) { DisplayUnits = displayUnits; } // Go recalc our values GetDisplayValues(bArea); Chart.Series.FindByName(EROSION).Points.DataBindXY(histoData.Values, "Elevation", histoData.Values, "Erosion"); Chart.Series.FindByName(DEPOSITION).Points.DataBindXY(histoData.Values, "Elevation", histoData.Values, "Deposition"); Chart.Series.FindByName(RAW).Points.DataBindXY(histoData.Values, "Elevation", histoData.Values, "Raw"); double binWidth = _thrHist.BinWidth(Project.ProjectManager.Project.Units).As(DisplayUnits.VertUnit); Axis axisX = Chart.ChartAreas[0].AxisX; axisX.Title = string.Format("Elevation Change ({0})", UnitsNet.Length.GetAbbreviation(DisplayUnits.VertUnit)); axisX.Minimum = _thrHist.BinLower(_thrHist.FirstBinId, Project.ProjectManager.Project.Units).As(DisplayUnits.VertUnit); axisX.Maximum = _thrHist.BinLower(_thrHist.LastBinId, Project.ProjectManager.Project.Units).As(DisplayUnits.VertUnit) + binWidth; axisX.MajorGrid.Interval = 10 * binWidth; axisX.MajorGrid.IntervalOffset = binWidth; axisX.Interval = 10 * binWidth; axisX.IntervalOffset = binWidth; axisX.MinorGrid.Interval = binWidth; if (bArea) { Chart.ChartAreas[0].AxisY.Title = string.Format("Area ({0})", UnitsNet.Area.GetAbbreviation(DisplayUnits.ArUnit)); } else { Chart.ChartAreas[0].AxisY.Title = string.Format("Volume ({0})", UnitsNet.Volume.GetAbbreviation(DisplayUnits.VolUnit)); } Chart.ChartAreas[0].RecalculateAxesScale(); Chart.ChartAreas[0].AxisY.RoundAxisValues(); }