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