Nevron .NET Vision Documentation
Indicators Overview

Overview

Indicators pinpoint important values or ranges on the gauge axes. Each gauge can contain an unlimited number of indicators. Adding or removing gauge indicators is done by modifying the contents of the Indicators collection of the gauge.

There are two general classes of indicators – value and range indicators. As the name suggests value indicators are used to pin point a value whereas range indicators show a range of values on a gauge axis.

The following table shows the possible types of indicators that can be contained in a gauge:

Indicator Type Description Applies to
NMarkerValueIndicator Represents a marker shown at a specified value on the gauge axis Linear and Radial gauges
NNeedleValueIndicator Represents a needle connecting the radial gauge center point (pin) and a point specified in axis scale coordinates Radial gauges
NRangeIndicator Represents a range of values on the gauge axis. Linear and Radial gauges
Indicator Z Order

The indicator paint order it controlled through the PaintOrder property. It allows you to choose from three options as shown in the following table:

AfterChildPanels AfterScale BeforeScale

By default range indicators and marker indicators use BeforeScale and needle indicators use AfterChildPanels. This allows you to add child panels as shown in the above picture without hiding the needle. The following code changes the paint order to AfterScale:

C#
Copy Code
someIndicator.PaintOrder = IndicatorPaintOrder.AfterScale;
Visual Basic
Copy Code
someIndicator.PaintOrder = IndicatorPaintOrder.AfterScale

The order in which the gauge will paint indicators with equal paint order is defined by their position in the Indicators collection of the gauge. The gauge will paint the indicators starting from the first one (which will appear on the bottom) and end with the last indicators which will be topmost. Therefore when you mix indicators you should be careful about the order in which you add them to the Indicators collection. Typically you should place range indicators before needle and marker indicators.

The following code will swap the Z order of two indicators:

C#
Copy Code
nChartControl1.Panels.Clear();

NRadialGaugePanel radialGauge = new NRadialGaugePanel();
nChartControl1.Panels.Add(radialGauge);

radialGauge.Indicators.Add(new NMarkerValueIndicator(10));
radialGauge.Indicators.Add(new NNeedleValueIndicator(20));

// later in code
if (radialGauge.Indicators.Count > 2)
{
        NIndicator temp = (NIndicator)radialGauge.Indicators[0];
        radialGauge.Indicators[0] = radialGauge.Indicators[1];
        radialGauge.Indicators[1] = temp;
}
Visual Basic
Copy Code
NChartControl1.Panels.Clear()

Dim radialGauge As New NRadialGaugePanel
NChartControl1.Panels.Add(radialGauge)

radialGauge.Indicators.Add(New NMarkerValueIndicator(10))
radialGauge.Indicators.Add(New NNeedleValueIndicator(20))

' later in code
If radialGauge.Indicators.Count > 2 Then
    Dim temp As NIndicator = CType(radialGauge.Indicators(0), NIndicator)
    radialGauge.Indicators(0) = radialGauge.Indicators(1)
    radialGauge.Indicators(1) = temp
End If
Indicator Axis

All indicators must have an axis where they scale on. If you do not specify an axis explicitly the indicator will scale on the first axis in the gauge axis collection. The following code will create a simple radial panel with two axes and two indicators:

C#
Copy Code
nChartControl1.Panels.Clear();
NRadialGaugePanel radialGauge = new NRadialGaugePanel();

NGaugeAxis axis = new NGaugeAxis();
axis.Range = new NRange1DD(100, 200);
radialGauge.Axes.Add(axis);

NMarkerValueIndicator marker1 = new NMarkerValueIndicator(20);
radialGauge.Indicators.Add(marker1);

NMarkerValueIndicator marker2 = new NMarkerValueIndicator(120);
marker2.Axis = axis;
radialGauge.Indicators.Add(marker2);

nChartControl1.Panels.Add(radialGauge);
nChartControl1.Refresh();
Visual Basic
Copy Code
NChartControl1.Panels.Clear()
Dim radialGauge As New NRadialGaugePanel

Dim axis As New NGaugeAxis
axis.Range = New NRange1DD(100, 200)
radialGauge.Axes.Add(axis)

Dim marker1 As New NMarkerValueIndicator(20)
radialGauge.Indicators.Add(marker1)

Dim marker2 As New NMarkerValueIndicator(120)
marker2.Axis = axis
radialGauge.Indicators.Add(marker2)

NChartControl1.Panels.Add(radialGauge)
NChartControl1.Refresh()

 

Note: In the code above the first marker is implicitly associated with the first gauge axis, because the code does not assign an axis to it.

Offset From Scale

Each indicator has a property called OffsetFromScale that allows you to control how the indicator is offset from the axis scale it is attached to. The offset is specified in NLength format where negative values mean offset to the right side of the ruler and positive values mean the opposite. Note that the offset is synchronized with the ruler orientation. The following pictures show how two indicators – marker and range indicator scale on a linear gauge depending on the offset from scale property and the axis ruler orientation:

Two indicators with negative offset on a left oriented gauge axis
Two indicators with negative offset on a right oriented gauge axis

The following code will replicate the gauge configuration from the first picture:

C#
Copy Code
nChartControl1.Panels.Clear();
NLinearGaugePanel linearGauge = new NLinearGaugePanel();
nChartControl1.Panels.Add(linearGauge);

NGaugeAxis axis = (NGaugeAxis)linearGauge.Axes[0];
axis.Anchor = new NModelGaugeAxisAnchor(new NLength(0), VertAlign.Center, RulerOrientation.Left, 0, 100);
NStandardScaleConfigurator scale = (NStandardScaleConfigurator)axis.ScaleConfigurator;
scale.SetPredefinedScaleStyle(PredefinedScaleStyle.Scientific);

NRangeIndicator rangeIndicator = new NRangeIndicator();
rangeIndicator.Value = 50;
rangeIndicator.FillStyle = new NGradientFillStyle(Color.White, Color.Red);
rangeIndicator.OffsetFromScale = new NLength(-10);
linearGauge.Indicators.Add(rangeIndicator);

NMarkerValueIndicator markerIndicator = new NMarkerValueIndicator();
markerIndicator.Value = 29;
markerIndicator.Shape.FillStyle = new NColorFillStyle(Color.Red);
markerIndicator.OffsetFromScale = new NLength(-5);
linearGauge.Indicators.Add(markerIndicator);

Value Dampening

All types of indicators support the value dampening effect feature which allows you to smooth the indicator movement when its value (or range) changes. The dampening effect in essence distributes the indicator value change over time producing a smooth movement of the indicator when its value or range changes. You enable dampening by setting the EnableDampening property of the indicator to true. The DampeningSteps property controls the number of steps the control will make to move from the old value of the indicator to the new one. The time interval between these steps is specified by the DampeningInterval property, which is specified in milliseconds. The following code snippets show how to to change the dampening steps (10 by default) and interval (50ms by default) of a marker value indicator:

C#
Copy Code

NMarkerValueIndicator indicator = new NMarkerValueIndicator();

indicator.EnableDampening = true;
indicator.DampeningInterval = 25;
indicator.DampeningSteps = 20;

someGauge.Indicators.Add(indicator);

Visual Basic
Copy Code

Dim indicator As New NMarkerValueIndicator

indicator.EnableDampening = True
indicator.DampeningInterval = 25
indicator.DampeningSteps = 20

someGauge.Indicators.Add(indicator)

 

 

Related Examples

Windows forms: Gauge Gallery\Gauges\Indicators

Web forms: Gauge Gallery\Gauges\Indicators

See Also

 

 


©2017. Nevron Software LLC.

Send Feedback