Example #1
0
        /// <summary>
        /// Create AxisY elements for circular chart
        /// </summary>
        /// <param name="height"></param>
        /// <param name="point"></param>
        /// <param name="minAngle"></param>
        /// <param name="index"></param>
        /// <param name="center"></param>
        /// <param name="isAxisLabelsEnabled"></param>
        private void CreateAxisYElements4RadarChart(Double height, Point point, Double minAngle, Double index, Point center, Boolean isAxisLabelsEnabled)
        {
            AxisElementsContainer = new StackPanel()
            {
                Background = InternalBackground
            };
            AxisElementsContainer.Orientation = Orientation.Horizontal;

            ApplyAxisProperties4CircularChart();

            CreateAxisLine(0, height, (Double)LineThickness / 2, (Double)LineThickness / 2, (Double)LineThickness, height);

            RotateTransform transform = null;

            if (isAxisLabelsEnabled)
            {
                AxisLabels.CreateVisualObject();

                if (AxisLabels.Visual != null)
                {
                    AxisElementsContainer.Children.Add(AxisLabels.Visual);
                }
            }
            else
            {
                transform       = new RotateTransform();
                transform.Angle = minAngle * index;
            }

            Double ticksWidth = 0;

            List <Ticks> ticks = Ticks.Reverse().ToList();

            foreach (Ticks tick in ticks)
            {
                tick.SetParms(PlacementTypes.Left, Double.NaN, height);

                tick.CreateVisualObject();

                if (tick.Visual != null)
                {
                    AxisElementsContainer.Children.Add(tick.Visual);
                    ticksWidth += tick.Visual.Width;
                }
            }

            if (AxisLine != null)
            {
                AxisElementsContainer.Children.Add(AxisLine);
            }

            Double axisLabelsWidth = 0;

            if (isAxisLabelsEnabled)
            {
                if (AxisLabels.Visual != null)
                {
                    if (!Double.IsNaN(AxisLabels.Visual.Width))
                    {
                        axisLabelsWidth = AxisLabels.Visual.Width;
                    }
                }
            }

            AxisElementsContainer.SetValue(Canvas.LeftProperty, point.X - axisLabelsWidth - ticksWidth);
            AxisElementsContainer.SetValue(Canvas.TopProperty, point.Y);

            if (!isAxisLabelsEnabled)
            {
                if (transform != null)
                {
                    AxisElementsContainer.RenderTransformOrigin = new Point(0.75, 0);
                    AxisElementsContainer.RenderTransform       = transform;
                }
            }

            CircularAxisVisual.Children.Add(AxisElementsContainer);
        }
Example #2
0
        private void CreateAxisYElements4PolarChart(Double height, Double minAngleInDegree, Point point, Double angle, Double index, Point center)
        {
            AxisElementsContainer = new StackPanel()
            {
                Background = InternalBackground
            };
            AxisElementsContainer.Orientation = Orientation.Horizontal;

            ApplyAxisProperties4CircularChart();

            CreateAxisLine(0, height, (Double)LineThickness / 2, (Double)LineThickness / 2, (Double)LineThickness, height);

            RotateTransform transform             = new RotateTransform();
            Double          rotationAngleIndegree = Visifire.Commons.CircularLabel.ResetMeanAngle(CalculateAngleByCoordinate(point, center)) * 180 / Math.PI;

            transform.Angle = rotationAngleIndegree + 90;

            Double axisLabelsWidth = 0;

            if (Math.Round(minAngleInDegree) == Math.Round(rotationAngleIndegree))
            {
                AxisLabels.CreateVisualObject();

                if (AxisLabels.Visual != null)
                {
                    AxisElementsContainer.Children.Add(AxisLabels.Visual);

                    if (!Double.IsNaN(AxisLabels.Visual.Width))
                    {
                        axisLabelsWidth = AxisLabels.Visual.Width;
                    }
                }
            }

            Double ticksWidth = 0;

            List <Ticks> ticks = Ticks.Reverse().ToList();

            foreach (Ticks tick in ticks)
            {
                tick.SetParms(PlacementTypes.Left, Double.NaN, height);

                tick.CreateVisualObject();

                if (tick.Visual != null)
                {
                    AxisElementsContainer.Children.Add(tick.Visual);
                    ticksWidth += tick.Visual.Width;
                }
            }

            if (AxisLine != null)
            {
                AxisElementsContainer.Children.Add(AxisLine);
            }

            AxisElementsContainer.SetValue(Canvas.LeftProperty, point.X - axisLabelsWidth - ticksWidth);
            AxisElementsContainer.SetValue(Canvas.TopProperty, point.Y);

            if (transform != null)
            {
                AxisElementsContainer.RenderTransformOrigin = new Point(1, 0);
                AxisElementsContainer.RenderTransform       = transform;
            }

            CircularAxisVisual.Children.Add(AxisElementsContainer);
        }