コード例 #1
0
        /// <summary>
        /// Method implementation for Generate Labels in ChartAxis
        /// </summary>
        /// <param name="axis">The axis.</param>
        /// <param name="smallTicksPerInterval">The small ticks per interval.</param>
        internal static void GenerateVisibleLabels(ChartAxis axis, double smallTicksPerInterval)
        {
            double interval = axis.VisibleInterval;
            double position = axis.VisibleRange.Start - (axis.VisibleRange.Start % interval);

            for (; position <= axis.VisibleRange.End; position += interval)
            {
                if (axis.VisibleRange.Inside(position))
                {
                    axis.VisibleLabels.Add(new ChartAxisLabel(position, axis.GetActualLabelContent(position), position));
                }

                if (axis.smallTicksRequired)
                {
                    axis.AddSmallTicksPoint(position);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Generates the visible labels.
        /// </summary>
        /// <param name="axis">The axis.</param>
        internal static void GenerateVisibleLabels3D(ChartAxis axis, object minimum, object maximum, object actualInterval)
        {
            double interval = axis.VisibleInterval;
            var    range    = axis.VisibleRange;
            double position;

            if ((minimum != null && maximum != null && actualInterval != null) ||
                axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible))
            {
                position = range.Start;
            }
            else
            {
                position = range.Start - (range.Start % interval);
            }

            for (; position <= axis.VisibleRange.End; position += interval)
            {
                if (axis.VisibleRange.Inside(position))
                {
                    axis.VisibleLabels.Add(new ChartAxisLabel(position, axis.GetLabelContent(position), position));
                }

                if (axis.smallTicksRequired)
                {
                    axis.AddSmallTicksPoint(position);
                }
            }
#if NETFX_CORE
            if (((maximum != null && range.End.Equals((TimeSpan.Parse(maximum.ToString())).TotalMilliseconds)) ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                 (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible)) &&
                !range.End.Equals(position - interval))
#else
            if (((maximum != null && range.End.Equals(((TimeSpan)maximum).TotalMilliseconds)) ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                 (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible)) &&
                !range.End.Equals(position - interval))
#endif
            {
                axis.VisibleLabels.Add(new ChartAxisLabel(range.End, axis.GetLabelContent(range.End), range.End));
            }
        }
コード例 #3
0
        /// <summary>
        /// Method implementation for Generate Labels in ChartAxis3D
        /// </summary>
        /// <param name="axis">The axis.</param>
        /// <param name="smallTicksPerInterval">The small ticks per interval.</param>
        internal static void GenerateVisibleLabels3D(ChartAxis axis, object minimum, object maximum, object actualInterval, double smallTicksPerInterval)
        {
            DoubleRange range    = axis.VisibleRange;
            double      interval = axis.VisibleInterval;
            double      position;

            if ((minimum != null && maximum != null && actualInterval != null) || axis.DesiredIntervalsCount != null ||
                axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible))
            {
                position = range.Start;
            }
            else
            {
                position = range.Start - (range.Start % interval);
            }

            for (; position <= range.End; position += interval)
            {
                if (range.Inside(position))
                {
                    axis.VisibleLabels.Add(new ChartAxisLabel(position, axis.GetActualLabelContent(position), position));
                }

                if (axis.smallTicksRequired)
                {
                    axis.AddSmallTicksPoint(position);
                }
            }

            if (((maximum != null && range.End.Equals(maximum)) ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                 (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible)) &&
                !range.End.Equals(position - interval))
            {
                axis.VisibleLabels.Add(new ChartAxisLabel(range.End, axis.GetActualLabelContent(range.End), range.End));
            }
        }
コード例 #4
0
        /// <summary>
        /// Method implementation for Generate Labels in ChartAxis3D
        /// </summary>
        /// <param name="axis">The axis.</param>
        /// <param name="maximum">The maximum.</param>
        /// <param name="minimum">The minimum.</param>
        /// <param name="actualInterval">The actual interval.</param>
        internal static void GenerateVisibleLabels3D(ChartAxis axis, object minimum, object maximum, object actualInterval, double logBase)
        {
            double interval = axis.VisibleInterval;

            double position;

            if ((minimum != null && maximum != null && actualInterval != null) ||
                axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible))
            {
                position = axis.VisibleRange.Start;
            }
            else
            {
                position = axis.VisibleRange.Start - (axis.VisibleRange.Start % axis.ActualInterval);
            }

            for (; position <= axis.VisibleRange.End; position += interval)
            {
                if (axis.VisibleRange.Inside(position))
                {
                    axis.VisibleLabels.Add(new ChartAxisLabel(position, axis.GetLabelContent(Math.Pow(logBase, position)), position));
                }

                if (axis.smallTicksRequired)
                {
                    axis.AddSmallTicksPoint(position, (axis as LogarithmicAxis3D).LogarithmicBase);
                }
            }

            if (((maximum != null && axis.VisibleRange.End.Equals(maximum)) ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                 (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible)) &&
                !axis.VisibleRange.End.Equals(position - interval))
            {
                axis.VisibleLabels.Add(new ChartAxisLabel(axis.VisibleRange.End, axis.GetLabelContent(Math.Pow(logBase, axis.VisibleRange.End)), axis.VisibleRange.End));
            }
        }
コード例 #5
0
        /// <summary>
        /// Generates the visible labels3D.
        /// </summary>
        /// <param name="axis">The axis.</param>
        /// <param name="intervalType">Type of the interval.</param>
        /// Method implementation for Create VisibleLabels for DateTime axis
        internal static void GenerateVisibleLabels3D(ChartAxis axis, object minimum, object maximum, DateTimeIntervalType intervalType)
        {
            var      startDate = axis.VisibleRange.Start.FromOADate();
            DateTime alignedDate;
            var      interval = IncreaseInterval(startDate, axis.VisibleInterval, intervalType).ToOADate() - axis.VisibleRange.Start;

            if (axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible)
            {
                alignedDate = startDate;
            }
            else
            {
                alignedDate = AlignRangeStart(startDate, axis.VisibleInterval, intervalType);
            }

            var    dateTimeAxis = axis as DateTimeAxis;
            var    days         = "";
            double distinctDate = 0d;
            double position     = alignedDate.ToOADate();

            if (dateTimeAxis != null && dateTimeAxis.EnableBusinessHours)
            {
                days        = dateTimeAxis.InternalWorkingDays;
                alignedDate = new DateTime(startDate.Year, startDate.Month, startDate.Day).AddHours(dateTimeAxis.OpenTime);
                position    = alignedDate.ToOADate();
            }

            var dateTimeAxis3D = axis as DateTimeAxis3D;

            while (position <= axis.VisibleRange.End)
            {
                if (axis.VisibleRange.Inside(position))
                {
                    var dateTimeAxisLabel = new DateTimeAxisLabel(position, alignedDate.ToString(axis.LabelFormat, CultureInfo.CurrentCulture), position);
                    dateTimeAxisLabel.IntervalType = dateTimeAxis3D.ActualIntervalType3D;
                    dateTimeAxisLabel.IsTransition = GetTransitionState(ref distinctDate, alignedDate, dateTimeAxis3D.ActualIntervalType3D);
                    axis.VisibleLabels.Add(dateTimeAxisLabel);
                }

                alignedDate = IncreaseNonWorkingInterval(days, dateTimeAxis, alignedDate, axis.VisibleInterval, intervalType);
                if (dateTimeAxis != null && dateTimeAxis.EnableBusinessHours)
                {
                    alignedDate = NonWorkingDaysIntervals(dateTimeAxis, alignedDate, interval, intervalType);
                }

                if (axis.smallTicksRequired)
                {
                    axis.AddSmallTicksPoint(position, interval);
                }

                position = alignedDate.ToOADate();
            }

            if (((maximum != null && axis.VisibleRange.End.FromOADate().Equals(maximum)) ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible ||
                 axis.EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible) &&
                !axis.VisibleRange.End.Equals(position - interval))
            {
                var dateTimeAxisLabel = new DateTimeAxisLabel(position, alignedDate.ToString(axis.LabelFormat, CultureInfo.CurrentCulture), position);
                dateTimeAxisLabel.IntervalType = dateTimeAxis3D.ActualIntervalType3D;
                dateTimeAxisLabel.IsTransition = GetTransitionState(ref distinctDate, alignedDate, dateTimeAxis3D.ActualIntervalType3D);
                axis.VisibleLabels.Add(dateTimeAxisLabel);
            }
        }