Пример #1
0
        /// <summary>
        /// Ases the core element.
        /// </summary>
        /// <param name="axis">The axis.</param>
        /// <param name="source">The source.</param>
        /// <returns></returns>
        public AxisSectionCoreNew AsCoreElement(AxisCoreNew axis, AxisOrientationNew source)
        {
            var model = new AxisSectionCoreNew(this, axis.Chart);

            model.View.Model = model;
            return(model);
        }
Пример #2
0
 /// <summary>
 /// Ases the core element.
 /// </summary>
 /// <param name="axis">The axis.</param>
 /// <param name="source">The source.</param>
 /// <returns></returns>
 public SeparatorConfigurationCore AsCoreElement(AxisCoreNew axis, AxisOrientationNew source)
 {
     AxisOrientation = source;
     Chart           = axis.Chart;
     Axis            = axis;
     return(new SeparatorConfigurationCore(axis)
     {
         IsEnabled = IsEnabled,
         Step = Step,
         Source = source
     });
 }
Пример #3
0
        /// <summary>
        /// Ases the core element.
        /// </summary>
        /// <param name="chart">The chart.</param>
        /// <param name="source">The source.</param>
        /// <returns></returns>
        public virtual AxisCoreNew AsCoreElement(ChartCore chart, AxisOrientationNew source)
        {
            if (Model == null)
            {
                Model = new AxisCoreNew(this);
            }

            Model.ShowLabels        = ShowLabels;
            Model.Chart             = chart;
            Model.IsMerged          = IsMerged;
            Model.Labels            = Labels;
            Model.LabelFormatter    = LabelFormatter;
            Model.MaxValue          = MaxValue;
            Model.MinValue          = MinValue;
            Model.Title             = Title;
            Model.Position          = Position;
            Model.Separator         = Separator.AsCoreElement(Model, source);
            Model.DisableAnimations = DisableAnimations;
            Model.Sections          = Sections.Select(x => x.AsCoreElement(Model, source)).ToList();

            return(Model);
        }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SeparatorConfigurationCore"/> class.
 /// </summary>
 /// <param name="axis">The axis.</param>
 public SeparatorConfigurationCore(AxisCoreNew axis)
 {
     Axis = axis;
 }
Пример #5
0
        private void PlaceLabel(string text, AxisCoreNew axis, AxisOrientationNew source)
        {
            _label.Text = text;

            var formattedText = new FormattedText(
                _label.Text,
                CultureInfo.CurrentUICulture,
                FlowDirection.LeftToRight,
                new Typeface(_label.FontFamily, _label.FontStyle, _label.FontWeight, _label.FontStretch),
                _label.FontSize, Brushes.Black);

            var transform = new LabelEvaluation(axis.View.LabelsRotation,
                                                formattedText.Width + 10, formattedText.Height, axis, source);

            _label.RenderTransform = Math.Abs(transform.LabelAngle) > 1
                ? new RotateTransform(transform.LabelAngle)
                : null;

            var toLine = ChartFunctionsNew.ToPlotArea(Value + SectionOffset + SectionWidth * .5, source, Model.Chart,
                                                      axis);

            var direction = source == AxisOrientationNew.X ? 1 : -1;

            toLine += axis.EvaluatesUnitWidth ? direction * ChartFunctionsNew.GetUnitWidth(source, Model.Chart, axis) / 2 : 0;
            var toLabel = toLine + transform.GetOffsetBySource(source);

            var chart = Model.Chart;

            if (axis.IsMerged)
            {
                const double padding = 4;

                if (source == AxisOrientationNew.Y)
                {
                    if (toLabel + transform.ActualHeight >
                        chart.DrawMargin.Top + chart.DrawMargin.Height)
                    {
                        toLabel -= transform.ActualHeight + padding;
                    }
                }
                else
                {
                    if (toLabel + transform.ActualWidth >
                        chart.DrawMargin.Left + chart.DrawMargin.Width)
                    {
                        toLabel -= transform.ActualWidth + padding;
                    }
                }
            }

            var labelTab = axis.Tab;

            labelTab += transform.GetOffsetBySource(source.Invert());

            if (source == AxisOrientationNew.Y)
            {
                labelTab += 8 * (axis.Position == AxisPositionNew.LeftBottom ? 1 : -1);

                if (Model.View.DisableAnimations || DisableAnimations)
                {
                    Canvas.SetLeft(_label, labelTab);
                    Canvas.SetTop(_label, toLabel);
                    return;
                }

                _label.BeginAnimation(Canvas.TopProperty,
                                      new DoubleAnimation(toLabel, chart.View.AnimationsSpeed));
                _label.BeginAnimation(Canvas.LeftProperty,
                                      new DoubleAnimation(labelTab, chart.View.AnimationsSpeed));
            }
            else
            {
                if (Model.View.DisableAnimations || DisableAnimations)
                {
                    Canvas.SetLeft(_label, toLabel);
                    Canvas.SetTop(_label, labelTab);
                    return;
                }

                _label.BeginAnimation(Canvas.LeftProperty,
                                      new DoubleAnimation(toLabel, chart.View.AnimationsSpeed));
                _label.BeginAnimation(Canvas.TopProperty,
                                      new DoubleAnimation(labelTab, chart.View.AnimationsSpeed));
            }
        }