Legend Item Text is not visible in Windows11Dark. This is because the LegendItem A possible workaround is to subscribe to the VisualItemCreating event. In the event handler, we can create a new LegendItemElement and set its ForeColor.
private void LegendElement_VisualItemCreating(object sender, LegendItemElementCreatingEventArgs e)
{
e.ItemElement = new LegendItemElement(e.LegendItem) { ForeColor = Color.Black };
}
To reproduce: - Enable the Trackball - Use the following code: public RadForm1() { InitializeComponent(); ScatterLineSeries sls = radChartView1.Series[0] as ScatterLineSeries; sls.XValueMember = "X"; sls.YValueMember = "Y"; } private void timer1_Tick(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("X", typeof(double)); dt.Columns.Add("Y", typeof(double)); Random ran = new Random(); for (int i = 0; i < 100; i++) dt.Rows.Add(i, 1 + ran.NextDouble() / 10); radChartView1.Series[0].DataSource = dt; } Workaround: class MyChartTrackballController : ChartTrackballController { protected override string GetPointText(DataPoint point) { ChartSeries series = point.Presenter as ChartSeries; if (series == null) { return string.Empty; } return base.GetPointText(point); } }
To reproduce: - Subscribe to the SelectedPointChanged event and show a dialog in it. - Start the chart and zoom in. Select a point, close the dialog and select a point again. Workaround: class MyChartSelectionController : ChartSelectionController { protected override ActionResult OnMouseDown(MouseEventArgs e) { //return base.OnMouseDown(e); return Controller.Empty; } protected override ActionResult OnMouseUp(MouseEventArgs e) { if (!this.AllowSelect || this.SelectionMode == ChartSelectionMode.None) { return base.OnMouseUp(e); } DataPoint oldDataPoint = SelectedPoint; DataPoint newDataPoint = null; ChartSeries oldSeries = SelectedSeries; ChartSeries newSeries = null; DataPoint point = null; foreach (ChartSeries series in this.Area.Series) { point = series.HitTest(e.X, e.Y); if (point != null) { newDataPoint = point; newSeries = series; break; } } if (point == null) { return base.OnMouseUp(e); } ChartViewSelectedPointChangingEventArgs cancelArgs = new ChartViewSelectedPointChangingEventArgs(oldDataPoint, newDataPoint, oldSeries, newSeries, this.SelectionMode); OnSelectedPointChanging(cancelArgs); if (cancelArgs.Cancel == true) { return base.OnMouseUp(e); } if (oldDataPoint == newDataPoint) { oldDataPoint.IsSelected = !oldDataPoint.IsSelected; newDataPoint = null; SelectedPoint = null; } else { if (this.SelectionMode == ChartSelectionMode.SingleDataPoint && oldDataPoint != null) { oldDataPoint.IsSelected = false; } this.SelectedPoint = newDataPoint; this.SelectedPoint.IsSelected = !SelectedPoint.IsSelected; } ChartViewSelectedPointChangedEventArgs changedArgs = new ChartViewSelectedPointChangedEventArgs(oldDataPoint, newDataPoint, oldSeries, newSeries, this.SelectionMode); OnSelectedPointChanged(changedArgs); return base.OnMouseUp(e); } }
To reproduce: radChartView1.AreaType = ChartAreaType.Pie; PieSeries series = new PieSeries(); series.DataPoints.Add(new PieDataPoint(50, "Germany")); series.Children.LastOrDefault().BackColor = Color.Red; series.Children.LastOrDefault().BorderColor = Color.Green; series.DataPoints.Add(new PieDataPoint(70, "United States")); series.Children.LastOrDefault().BackColor = Color.Green; series.Children.LastOrDefault().BorderColor = Color.Red; series.DataPoints.Add(new PieDataPoint(40, "France")); series.Children.LastOrDefault().BackColor = Color.Blue; series.Children.LastOrDefault().BorderColor = Color.Yellow; series.DataPoints.Add(new PieDataPoint(25, "United Kingdom")); series.Children.LastOrDefault().BackColor = Color.Yellow; series.Children.LastOrDefault().BorderColor = Color.Blue; this.radChartView1.Series.Add(series); radChartView1.ShowLegend = true; Workaround: for (int i = 0; i < radChartView1.ChartElement.LegendElement.Items.Count; i++) { PieDataPoint point = ((PieDataPoint)series.DataPoints[i]); radChartView1.ChartElement.LegendElement.Items[i].Element.BackColor = Color.Red; radChartView1.ChartElement.LegendElement.Items[i].Element.BorderColor = Color.Yellow; }
There are three ways in which null values can be handled: 1 . Zero. When this option is used, each null value is replaced with a zero. The data entry is not removed from the data collection. Only its original null/empty value is replaced with zero. 2 . Gap. This option visually removes the regions for each set of empty(null) points. The data entry is not removed from the data collection. Essentially, it connects the points neighboring the null point (or the collection of empty values). 3 . Drop - this option clips, or visually removes each section/segment, corresponding to a set of empty points/values.
How to reproduce: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radChartView1.AreaType = ChartAreaType.Pie; PieSeries series = new PieSeries(); series.DataPoints.Add(new PieDataPoint(0, "Germany")); series.DataPoints.Add(new PieDataPoint(0, "United States")); series.DataPoints.Add(new PieDataPoint(0, "France")); series.DataPoints.Add(new PieDataPoint(0, "United Kingdom")); series.ShowLabels = true; this.radChartView1.Series.Add(series); this.radChartView1.ShowSmartLabels = true; } } Workaround: this.radChartView1.ShowSmartLabels = false;
The trackball does not work well when charting the dxf cad drawing of a circle or more complex shape would be better for it to have cross hair mode, as single point mode does not work (as it picks up a massive array of x,y points in the tooltip, making it unmanageable) Showtrackball = true SelectionMode = SingleDataPoint
To reproduce: public Form1() { InitializeComponent(); Random rand = new Random(); for (int i = 0; i < 3; i++) { LineSeries lineSeries = new LineSeries(); lineSeries.DataPoints.Add(new CategoricalDataPoint(rand.Next(-50, 50), "Jan")); lineSeries.DataPoints.Add(new CategoricalDataPoint(rand.Next(-50, 50), "Apr")); lineSeries.DataPoints.Add(new CategoricalDataPoint(rand.Next(-50, 50), "Jul")); lineSeries.DataPoints.Add(new CategoricalDataPoint(rand.Next(-50, 50), "Oct")); this.radChartView1.Series.Add(lineSeries); } this.radChartView1.ShowLegend = true; this.radChartView1.ChartElement.LegendPosition = LegendPosition.Bottom; ((LineSeries)this.radChartView1.Series[0]).LegendTitle = "S&P 500"; ((LineSeries)this.radChartView1.Series[1]).LegendTitle = "MSCI Emerging Markets TR Index"; ((LineSeries)this.radChartView1.Series[2]).LegendTitle = "Great ETF"; } Workaround: Font f = new Font("Times New Roman", 10f, FontStyle.Regular); private void Form1_Load(object sender, EventArgs e) { foreach (LegendItemElement item in this.radChartView1.ChartElement.LegendElement.StackElement.Children) { item.Font = f; } }
To reproduce: public Form1() { InitializeComponent(); this.radChartView1.AreaType = ChartAreaType.Polar; Random rand = new Random(); for (int i = 0; i < 80; i++) { RadarLineSeries s = new RadarLineSeries(); s.ShowLabels = true; for (int j = 0; j < 8; j++) { s.DataPoints.Add(new CategoricalDataPoint(rand.Next(1, 100), "X" + j)); } this.radChartView1.Series.Add(s); } this.radChartView1.ShowSmartLabels = true; }
To reproduce: public Form1() { InitializeComponent(); this.radChartView1.ShowPanZoom = true; Random rand = new Random(); this.radChartView1.AreaType = ChartAreaType.Polar; for (int i = 0; i < 85; i++) { RadarLineSeries radarPointSeries = new RadarLineSeries(); for (int j = 0; j < 8; j++) { radarPointSeries.DataPoints.Add(new CategoricalDataPoint(rand.Next(1, 100), "X" + j)); } this.radChartView1.Series.Add(radarPointSeries); } } Workaround: set the ShowPanZoom property after the chart is populated with data.
To reproduce: this.radChartView1.AreaType = Telerik.WinControls.UI.ChartAreaType.Polar; RadarLineSeries series = new RadarLineSeries(new SizeF(8f, 8f)); series.DataPoints.Add(new CategoricalDataPoint(0.0, "Coding")); series.LegendTitle = String.Format("Coding"); series.BorderWidth = 2; radChartView1.Series.Add(series); series.PolarAxis.Minimum = 0d; series.PolarAxis.Maximum = 0.0; series.PolarAxis.TickLength = 4;
Workaround: public Form1() { InitializeComponent(); StringFormat.GenericTypographic.Alignment = StringAlignment.Near; }
To reproduce: Add horizontal bar series bind to the following data: myList = new BindingList<MyCustomObject>(); myList.Add(new MyCustomObject(1, "Outdoor")); myList.Add(new MyCustomObject(0, "Hardware")); myList.Add(new MyCustomObject(0, "Tools")); myList.Add(new MyCustomObject(1, "Books")); myList.Add(new MyCustomObject(1, "Appliances")); Workaround: LinearAxis verticalAxis = new LinearAxis(); verticalAxis.LabelFitMode = AxisLabelFitMode.Rotate; verticalAxis.LabelRotationAngle = 0.1; verticalAxis.Minimum = 0; verticalAxis.Maximum = 2;
If one adds a RadChartView to a form and set its Visibility property to false or creates a chart in memory and tries to export it to an image the result would not look as expected.
Steps to reproduce: 1. Add a chart with bar series to a form 2. Set the border of the bars to be larger than 2px You will see that bars are taller/longer with the border applied than they are without a border.
Steps to reproduce: 1. On a button click create a chart, add series and a data source. 2. Call the Dispose method of the chart. You will notice that the memory allocated by the chart will not be released Workaround: clear the series before you dispose of the chart.
To reproduce: - Start the Q3 2014 SP1 demo application. - Open the Bar example. - Set the orientation to horizontal. In addition please note that the first and the last labels of the horizontal axis are missing as well. Workaround: CategoricalAxis vertiacalAxis = radChartView1.Axes[1] as CategoricalAxis; if (vertiacalAxis != null) { vertiacalAxis.LabelFitMode = AxisLabelFitMode.Rotate; vertiacalAxis.LabelRotationAngle = .1; }
To reproduce: populate RadChartView with data and try to export it to Emf using (MemoryStream ms = new MemoryStream()) { this.radChartView1.ExportToImage(ms, this.radChartView1.Size, System.Drawing.Imaging.ImageFormat.Emf); } Workaround: use some of the other ImageFormats.