To reproduce:
Create a RadChartView with LineSeries. Subscribe to the CreatePointElement event and use the following code:
void Chart_CreatePointElement(object sender, ChartViewCreatePointElementEventArgs e)
{
e.DataPointElement = new DataPointElement(e.DataPoint);
e.DataPointElement.GradientStyle = GradientStyles.Solid;
e.DataPointElement.GradientAngle = 270;
e.DataPointElement.Shape = new DiamondShape();
e.DataPointElement.BackColor = Color.Red;
e.DataPointElement.BackColor2 = Color.Blue;
e.DataPointElement.BackColor3 = Color.Blue;
e.DataPointElement.BackColor4 = Color.Blue;
}
The elements paint when you use ChamferedRectShape.
Workaround
class MyDiamondShape : ElementShape
{
public override GraphicsPath CreatePath(Rectangle bounds)
{
GraphicsPath path = new GraphicsPath();
path.AddPolygon(new PointF[]
{
new PointF(bounds.X + 0.5f * bounds.Width, bounds.Top),
new PointF(bounds.Right, bounds.Y + 0.5f * bounds.Height),
new PointF(bounds.X + 0.5f * bounds.Width, bounds.Bottom),
new PointF(bounds.Left, bounds.Y + 0.5f * bounds.Height)
});
return path;
}
}
class MyStarShape : ElementShape
{
private int arms;
private float innerRadiusRatio;
public MyStarShape()
{
this.arms = 8;
this.innerRadiusRatio = 0.2f;
}
/// <summary>
/// Creates Star like shape. Overrides CreatePath method in the base class
/// ElementShape.
/// </summary>
public override GraphicsPath CreatePath(Rectangle bounds)
{
GraphicsPath path = new GraphicsPath();
double angle = Math.PI / arms;
double offset = Math.PI / 2d;
PointF center = new PointF(bounds.X + bounds.Width / 2f, bounds.Y + bounds.Height / 2f);
PointF[] points = new PointF[arms * 2];
for (int i = 0; i < 2 * arms; i++)
{
float r = (i & 1) == 0 ? bounds.Width / 2f : bounds.Width / 2f * innerRadiusRatio;
float currX = center.X + (float)Math.Cos(i * angle - offset) * r;
float currY = center.Y + (float)Math.Sin(i * angle - offset) * r;
points[i] = new PointF(currX, currY);
}
path.AddPolygon(points);
return path;
}
}
class MyHeartShape : ElementShape
{
public override GraphicsPath CreatePath(Rectangle bounds)
{
GraphicsPath path = new GraphicsPath();
path.AddArc(new Rectangle(bounds.X, bounds.Y, bounds.Width / 2, bounds.Height / 2), 150, 210);
path.AddArc(new Rectangle(bounds.X + bounds.Width / 2, bounds.Y, bounds.Width / 2, bounds.Height / 2), 180, 210);
path.AddLine(path.GetLastPoint(), new Point(bounds.X + bounds.Width / 2, bounds.Bottom));
path.CloseFigure();
return path;
}
}