internal void DrawGrid(PanelControl pan) { var gs = _graphPanel.GetMasterGraph(pan); if (gs == null) { return; } if (double.IsInfinity(gs.MaxD)) { gs.MaxD = gs.MinD + 100.0; } if (double.IsNaN(gs.MaxD)) { gs.MaxD = gs.MinD + 100.0; } var xStep = 50.0; while (xStep * pan.XScale < 75) { xStep = xStep * 2; } while (xStep * pan.XScale > 150) { xStep = xStep / 2; } var val = xStep; var cnt = 0; if (val <= 0.0) { val = 1.0; } if (val < 1.0) { while (val < 1.0) { val *= 10; cnt -= 1; } } if (val > 10) { while (val > 10) { val = val / 10; cnt += 1; } } if (val > 5.001) { xStep = 5.0; } else if (val > 2.001) { xStep = 2.0; } else { xStep = 1.0; } if (cnt < 0) { cnt = Math.Abs(cnt); for (var i = 0; i < cnt; i++) { xStep /= 10.0; } } else { for (var i = 0; i < cnt; i++) { xStep *= 10.0; } } var minValue = gs.MinD; var maxValue = (gs.MaxD - minValue) / 10.0; // ReSharper disable once CompareOfFloatsByEqualityOperator if (maxValue == 0.0) { maxValue = 10.0; } var yStep = (pan.GPan.Height - 5) / 10.0; while (yStep * pan.YScale < 50) { yStep = yStep * 2.0; maxValue = maxValue * 2.0; } while (yStep * pan.YScale > 100) { yStep = yStep / 2.0; maxValue = maxValue / 2.0; } val = maxValue; cnt = 0; if (val < 1.0 && val > 0.0) { while (val < 1.0) { val *= 10; cnt -= 1; } } while (val > 10) { val = val / 10; cnt += 1; } if (val > 5.001) { val = 5.0; } else if (val > 2.001) { val = 2.0; } else { val = 1.0; } if (cnt < 0) { cnt = Math.Abs(cnt); for (var i = 0; i < cnt; i++) { val /= 10.0; } } else { for (var i = 0; i < cnt; i++) { val *= 10.0; } } if (_stepOverride && xStep > 1) { xStep = 1; } if (_xStepOverride) { xStep = 1; } if (_stepOverride && val > 1) { val = 1; } var scl = val / maxValue; maxValue = val; yStep = yStep * scl; try { DrawXGrid(pan, xStep); yStep = yStep * pan.YScale; DrawYGrid(pan, yStep, gs, minValue, maxValue); } // ReSharper disable once EmptyGeneralCatchClause catch { } }