In This Topic
Annotations derive from the NAnnotation class and share a number of common properties like Text, TextStyle, FillStyle, StrokeStyle and ShadowStyle. The following table shows the annotation objects supported by Nevron Chart for .NET:
The NAnnotation class derives directly from the NAnchorPanel class thus allowing annotations to use anchors in order to attach to different elements of the chart content.
The following code creates a rectangular callout panel and attaches is to the second data point of a bar series.
C# |
Copy Code
|
NChart chart = chartControl.Charts[0];
NBarSeries bar = (NBarSeries)chart.Series.Add(SeriesType.Bar);
bar.Values.Add(10);
bar.Values.Add(20);
bar.Values.Add(30);
NRectangularCallout rectangularCallout = new NRectangularCallout();
rectangularCallout.ArrowLength = new NLength(30, NRelativeUnit.ParentPercentage);
rectangularCallout.FillStyle = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant1, Color.FromArgb(125, Color.White), Color.FromArgb(125, Color.CadetBlue));
rectangularCallout.UseAutomaticSize = true;
rectangularCallout.Orientation = 120;
rectangularCallout.Anchor = new NDataPointAnchor(bar, 1, ContentAlignment.MiddleCenter, StringAlignment.Center);
rectangularCallout.Text = "Rectangular callout attached \r\nto the second bar";
chartControl.Panels.Add(rectangularCallout);
chartControl.Refresh();
|
Visual Basic |
Copy Code
|
Dim chart As NCartesianChart = chartControl.Charts(0)
Dim bar As NBarSeries = chart.Series.Add(SeriesType.Bar)
bar.Values.Add(10)
bar.Values.Add(20)
bar.Values.Add(30)
Dim rectangularCallout As New NRectangularCallout
rectangularCallout.ArrowLength = New NLength(30, NRelativeUnit.ParentPercentage)
rectangularCallout.FillStyle = New NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant1, Color.FromArgb(125, Color.White), Color.FromArgb(125, Color.CadetBlue))
rectangularCallout.UseAutomaticSize = True
rectangularCallout.Orientation = 120
rectangularCallout.Anchor = New NDataPointAnchor(bar, 1, ContentAlignment.MiddleCenter, StringAlignment.Center)
rectangularCallout.Text = "Rectangular callout attached " + Environment.NewLine + "to the second bar"
chartControl.Panels.Add(rectangularCallout)
chartControl.Refresh()
|
Controlling the Length of the Callout Arrow
Notice that the NCutEdgeRectangularCallout , NOvalCallout etc. have the Callout suffix. This is because they all inherit from the NCallout class that provides the basic functionality for callouts. The most important characteristics of a callout is that is has an arrow showing the point of interest (pivot). To control the length of this arrow you should touch the ArrowLength property. For example:
C# |
Copy Code
|
rectangularCallout.ArrowLength = new NLength(30, NRelativeUnit.ParentPercentage);
|
Visual Basic |
Copy Code
|
rectangularCallout.ArrowLength = New NLength(30, NRelativeUnit.ParentPercentage)
|
Keeping the Callout Inside the Parent Bounds
When you rotate scale or resize the chart control callouts will move according to the anchor they are attached to. This however may result in callouts that fall outside the control visible area, which decreases the readability of the chart. To ensure that callouts are always visible you may use the AlwaysInsideParent property. When set to true the callout will try not to break outside its parent bounds if possible:
C# |
Copy Code
|
rectangularCallout.AlwaysInsideParent = true;
|
Visual Basic |
Copy Code
|
rectangularCallout.AlwaysInsideParent = True
|
Related Examples
Windows Forms \ Panels \ Annotations
See Also