when the number of elements are more than what? i don't understand. i don't see anything wrong in that image, either. could you explain in more detail what the problem is?
check out the documentation for custom layers. the same code can be used in an ILayer implementation.
http://help.infragistics.com/Help/NetAdvantage/NET/2008.3/CLR2.0/html/Chart_Layers.html
i'm not really sure how to achieve this.
you can try turning off BreakAllSlices and implementing the breaking yourself like this:
private void ultraChart1_ChartDrawItem(object sender, Infragistics.UltraChart.Shared.Events.ChartDrawItemEventArgs e) { Wedge w = e.Primitive as Wedge; if (w != null) { w.Center = Infragistics.UltraChart.Core.Util.Geometry.AngularToCartesian(w.Center, 25, Infragistics.UltraChart.Core.Util.Geometry.DegreeToRadian(w.startAngle) + Infragistics.UltraChart.Core.Util.Geometry.DegreeToRadian(w.angleSweep / 2f)); } }
but since the center points in both images are not the same for each wedge, i'm not sure how to get them to line up in a scenario where one slice is > 180 degrees.
an alternate way to achieve this is by inserting a white "separator" wedge in between existing wedges. again, this is with BreakAllSlices turned off:
private void ultraChart1_FillSceneGraph(object sender, Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs e) { PrimitiveCollection primitivesToAdd = new PrimitiveCollection(); for (int i = 0; i < e.SceneGraph.Count; i++) { Wedge currentWedge = e.SceneGraph[i] as Wedge; if (currentWedge != null) { for (int j = i + 1; j < e.SceneGraph.Count; j++) { Wedge nextWedge = e.SceneGraph[j] as Wedge; if (nextWedge != null) { Wedge separatorWedge = new Wedge(currentWedge.Center, currentWedge.Radius, currentWedge.startAngle + currentWedge.angleSweep - 2f, 4f); separatorWedge.RadiusInner = currentWedge.RadiusInner; separatorWedge.PE = new PaintElement(Color.White); //separatorWedge.PE.Stroke = Color.White; primitivesToAdd.Add(separatorWedge); } } } } e.SceneGraph.AddRange(primitivesToAdd.ToArray()); }