Пример #1
0
        /// <summary>
        /// Calculates actual interval
        /// </summary>
        /// <param name="axis"></param>
        /// <param name="range"></param>
        /// <param name="availableSize"></param>
        /// <param name="interval"></param>
        /// <returns></returns>
        internal static double CalculateActualInterval(ChartAxis axis, DoubleRange range, Size availableSize, object interval)
        {
            if (interval == null)
            {
                return(Math.Max(1d, Math.Floor(range.Delta / axis.GetActualDesiredIntervalsCount(availableSize))));
            }
#if NETFX_CORE
            return(Convert.ToDouble(interval));
#else
            return(((double?)interval).Value);
#endif
        }
Пример #2
0
        /// <summary>
        /// Calculates nice interval
        /// </summary>
        /// <param name="axis"></param>
        /// <param name="actualRange"></param>
        /// <param name="availableSize"></param>
        /// <returns></returns>
        internal static double CalculateNiceInterval(ChartAxis axis, DoubleRange actualRange, Size availableSize)
        {
            double delta = actualRange.Delta;

            double actualDesiredIntervalsCount = axis.GetActualDesiredIntervalsCount(availableSize);

            double niceInterval = delta;

            double minInterval = Math.Pow(10, Math.Floor(Math.Log10(niceInterval)));

            foreach (int mul in ChartAxis.c_intervalDivs)
            {
                double currentInterval = minInterval * mul;

                if (actualDesiredIntervalsCount < (delta / currentInterval))
                {
                    break;
                }

                niceInterval = currentInterval;
            }

            return(niceInterval >= 1 ? niceInterval : 1);
        }