private double GetLabelOffset(PieChart pieChart) { double labelOffset = 0; object rawLabelOffset = ReadLocalValue(LabelOffsetProperty); if (rawLabelOffset == DependencyProperty.UnsetValue) labelOffset = pieChart.LabelOffset; else labelOffset = (double)rawLabelOffset; return labelOffset; }
internal void Update(double offset, double percentage, PieChart pieChart) { double thickness = Thickness; if (thickness == 0) thickness = pieChart.Thickness; double minHalfSize = Math.Min(ActualWidth, ActualHeight) / 2; thickness = Math.Min(minHalfSize, thickness); double radius = minHalfSize - thickness / 2; if (radius > 0) { if (offset < 0) offset = 0; else if (offset >= 100) offset = 99.9999d; if (percentage < 0) percentage = 0; if (percentage >= 100) percentage = 99.9999d; double angleOffset = (offset * 360) / 100; double angle = (percentage * 360) / 100; RenderArc(radius, thickness, angleOffset, angle); double labelOffset = GetLabelOffset(pieChart); RenderLabel(radius, labelOffset, thickness, angleOffset, angle); } }