Occurs before a series point is drawn, when the chart's content is being drawn.
public event CustomDrawSeriesPointEventHandler CustomDrawSeriesPoint
Public Event CustomDrawSeriesPoint As CustomDrawSeriesPointEventHandler
The CustomDrawSeriesPoint event's data class is CustomDrawSeriesPointEventArgs. The following properties provide information specific to this event:
|DrawOptions||Gets the settings for custom drawing series of different view types. Inherited from CustomDrawSeriesEventArgs.|
|Handled||Gets or sets a value that indicates the present state of the event handling for a routed event as it travels the route. Inherited from RoutedEventArgs.|
|LabelsTexts||Gets the labels texts for the points currently being painted.|
|LabelText||Gets or sets the text of a label for the point currently being painted.|
|LegendText||Gets or sets the Legend's text for the series whose points are currently being painted. Inherited from CustomDrawSeriesEventArgs.|
|OriginalSource||Gets the original reporting source as determined by pure hit testing, before any possible Source adjustment by a parent class. Inherited from RoutedEventArgs.|
|PercentValue||Returns the portion of the series point's value within the total value of a series group to which the series point belongs.|
|RoutedEvent||Gets or sets the RoutedEvent associated with this RoutedEventArgs instance. Inherited from RoutedEventArgs.|
|Series||Gets the series whose points are currently being painted. Inherited from CustomDrawSeriesEventArgs.|
|SeriesPoint||Gets the series point currently being painted.|
|Source||Gets or sets a reference to the object that raised the event. Inherited from RoutedEventArgs.|
|TotalValue||Returns the total value of a series group to which the series point belongs.|
The CustomDrawSeriesPoint event is raised before every series point is painted. The event parameter's CustomDrawSeriesEventArgs.Series property provides the series whose specific series options are to be determined. The CustomDrawSeriesPointEventArgs.SeriesPoint property provides the series point which provides access to the data that corresponds to the series point being painted. And the CustomDrawSeriesEventArgs.DrawOptions property provides drawing options specific to each series.
The ChartControl.CustomDrawSeries and CustomDrawSeriesPoint events are always raised in the following order.
- The CustomDrawSeries event for the first series in the chart's Diagram.Series collection. The first series in the series collection is a Series for which the SeriesCollection.IndexOf method returns 0.
- The CustomDrawSeriesPoint event for all the series points of the first series.
- The CustomDrawSeries event for the second series in the chart's Diagram.Series collection.
- The CustomDrawSeriesPoint event for all series points of the second series.
- ...and so on, for all the other series and their points.
This example shows how to change the color of each series point according to its values.
In addition, the point labels text is changed to show the color of the current interval (Green, Yellow, or Red).
To accomplish this, it is necessary to invoke the ChartControl.CustomDrawSeriesPoint event and change its drawing options in the CorrectDrawOptions() method.
In this example, you can deactivate the "Custom Draw" option on the stack panel to return to the default appearance of series points.
A complete sample project is available at https://github.com/DevExpress-Examples/how-to-custom-draw-chart-series-points-e4550.
<Window x:Class="CustomDrawChart.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" Title="MainWindow" Height="350" Width="525" > <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition /> </Grid.ColumnDefinitions> <StackPanel Grid.Row="0" Grid.Column="0"> <dxe:CheckEdit Name="chbCustomDraw" Content="Custom Draw" IsChecked="True" Checked="chbCustomDraw_Checked" Unchecked="chbCustomDraw_Unchecked" /> </StackPanel> <dxc:ChartControl Grid.Row="0" Grid.Column="1" Name="chart" CustomDrawSeriesPoint="chart_CustomDrawSeriesPoint"> <dxc:XYDiagram2D> <dxc:XYDiagram2D.AxisY> <dxc:AxisY2D GridSpacing="1"> <dxc:AxisY2D.Strips> <dxc:Strip AxisLabelText="High" MinLimit="2" MaxLimit="3" Brush="#FFFFDBDB" BorderColor="#00BB002F" /> <dxc:Strip AxisLabelText="Middle" MinLimit="1" MaxLimit="2" Brush="#FFFFF6BF" BorderColor="#00BB002F" /> <dxc:Strip AxisLabelText="Low" MinLimit="0" MaxLimit="1" Brush="#FFD6F39F" BorderColor="#00BB002F" /> </dxc:AxisY2D.Strips> <dxc:AxisY2D.Range> <dxc:AxisRange MinValue="0" MaxValue="3" /> </dxc:AxisY2D.Range> </dxc:AxisY2D> </dxc:XYDiagram2D.AxisY> <dxc:BarSideBySideSeries2D LabelsVisibility="True"> <dxc:SeriesPoint Argument="A" Value="0.3" /> <dxc:SeriesPoint Argument="B" Value="1.2" /> <dxc:SeriesPoint Argument="C" Value="1.7" /> <dxc:SeriesPoint Argument="D" Value="0.8" /> <dxc:SeriesPoint Argument="E" Value="1.9" /> <dxc:SeriesPoint Argument="F" Value="2.8" /> <dxc:SeriesPoint Argument="G" Value="1.3" /> <dxc:SeriesPoint Argument="H" Value="3" /> </dxc:BarSideBySideSeries2D> </dxc:XYDiagram2D> </dxc:ChartControl> </Grid> </Window>