Represents a PieChart's segment data
Ejemplo n.º 1
0
        private void drawWideSegment(PieChartSegment segment)
        {
            if (!(segment.Percentage > 50))
            {
                return;
            }

            var triangleX1OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos((_startAngle + 180) * Math.PI / 180));
            var triangleY1OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin((_startAngle + 180) * Math.PI / 180));

            _endAngle += segment.Angle - 180;
            var triangleX2OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos(_endAngle * Math.PI / 180));
            var triangleY2OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin(_endAngle * Math.PI / 180));

            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);

            //draw the triangle within the circle
            _template.MoveTo(_circleCenterX0, _circleCenterY0);
            _template.LineTo(triangleX1OnCircle, triangleY1OnCircle);
            _template.LineTo(triangleX2OnCircle, triangleY2OnCircle);
            _template.LineTo(_circleCenterX0, _circleCenterY0);
            _template.FillStroke();

            //draw the arc
            _template.Arc(_circleCenterX0 - Radius, _circleCenterY0 - Radius, _circleCenterX0 + Radius, _circleCenterY0 + Radius, _startAngle + 180, segment.Angle - 180);
            _template.FillStroke();
        }
Ejemplo n.º 2
0
        private void drawSegment(PieChartSegment segment)
        {
            var x1OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos(_startAngle * Math.PI / 180));
            var y1OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin(_startAngle * Math.PI / 180));

            _endAngle += segment.Percentage <= 50 ? segment.Angle : 180;
            var x2 = (float)(_circleCenterX0 + Radius * Math.Cos(_endAngle * Math.PI / 180));
            var y2 = (float)(_circleCenterY0 + Radius * Math.Sin(_endAngle * Math.PI / 180));

            //draw the triangle within the circle
            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);
            _template.MoveTo(_circleCenterX0, _circleCenterY0);
            _template.LineTo(x1OnCircle, y1OnCircle);
            _template.LineTo(x2, y2);
            _template.LineTo(_circleCenterX0, _circleCenterY0);
            _template.FillStroke();

            //draw the arc
            _template.Arc(
                _circleCenterX0 - Radius,
                _circleCenterY0 - Radius,
                _circleCenterX0 + Radius,
                _circleCenterY0 + Radius,
                _startAngle,
                segment.Percentage <= 50 ? segment.Angle : 180);
            _template.FillStroke();
        }
Ejemplo n.º 3
0
        private void drawLabel(PieChartSegment segment)
        {
            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);
            _template.Rectangle(_circleCenterX0 + Radius + Margin, _labelY, BulletWidth, BulletHeight);
            _template.FillStroke();

            ColumnText.ShowTextAligned(
                canvas: _template,
                alignment: Element.ALIGN_LEFT,
                phrase: PdfFont.FontSelector.Process(segment.Label),
                x: _circleCenterX0 + Radius + (2 * Margin),
                y: _labelY,
                rotation: 0,
                runDirection: (int)Direction,
                arabicOptions: 0);

            _labelY -= _labelRowsGap;
        }
Ejemplo n.º 4
0
        private void drawWideSegment(PieChartSegment segment)
        {
            if (!(segment.Percentage > 50))
            {
                return;
            }

            var triangleX1OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos((_startAngle + 180) * Math.PI / 180));
            var triangleY1OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin((_startAngle + 180) * Math.PI / 180));

            _endAngle += segment.Angle - 180;
            var triangleX2OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos(_endAngle * Math.PI / 180));
            var triangleY2OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin(_endAngle * Math.PI / 180));

            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);

            //draw the triangle within the circle
            _template.MoveTo(_circleCenterX0, _circleCenterY0);
            _template.LineTo(triangleX1OnCircle, triangleY1OnCircle);
            _template.LineTo(triangleX2OnCircle, triangleY2OnCircle);
            _template.LineTo(_circleCenterX0, _circleCenterY0);
            _template.FillStroke();

            //draw the arc
            _template.Arc(_circleCenterX0 - Radius, _circleCenterY0 - Radius, _circleCenterX0 + Radius, _circleCenterY0 + Radius, _startAngle + 180, segment.Angle - 180);
            _template.FillStroke();
        }
Ejemplo n.º 5
0
        private void drawSegment(PieChartSegment segment)
        {
            var x1OnCircle = (float)(_circleCenterX0 + Radius * Math.Cos(_startAngle * Math.PI / 180));
            var y1OnCircle = (float)(_circleCenterY0 + Radius * Math.Sin(_startAngle * Math.PI / 180));
            _endAngle += segment.Percentage <= 50 ? segment.Angle : 180;
            var x2 = (float)(_circleCenterX0 + Radius * Math.Cos(_endAngle * Math.PI / 180));
            var y2 = (float)(_circleCenterY0 + Radius * Math.Sin(_endAngle * Math.PI / 180));

            //draw the triangle within the circle
            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);
            _template.MoveTo(_circleCenterX0, _circleCenterY0);
            _template.LineTo(x1OnCircle, y1OnCircle);
            _template.LineTo(x2, y2);
            _template.LineTo(_circleCenterX0, _circleCenterY0);
            _template.FillStroke();

            //draw the arc
            _template.Arc(
                _circleCenterX0 - Radius,
                _circleCenterY0 - Radius,
                _circleCenterX0 + Radius,
                _circleCenterY0 + Radius,
                _startAngle,
                segment.Percentage <= 50 ? segment.Angle : 180);
            _template.FillStroke();
        }
Ejemplo n.º 6
0
        private void drawLabel(PieChartSegment segment)
        {
            _template.SetColorStroke(segment.Color);
            _template.SetColorFill(segment.Color);
            _template.Rectangle(_circleCenterX0 + Radius + Margin, _labelY, BulletWidth, BulletHeight);
            _template.FillStroke();

            ColumnText.ShowTextAligned(
                canvas: _template,
                alignment: Element.ALIGN_LEFT,
                phrase: PdfFont.FontSelector.Process(segment.Label),
                x: _circleCenterX0 + Radius + (2 * Margin),
                y: _labelY,
                rotation: 0,
                runDirection: (int)Direction,
                arabicOptions: 0);

            _labelY -= _labelRowsGap;
        }