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(); }
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(); }
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; }