using
Nevron.Chart;
using
Nevron.GraphicsCore;
using
Nevron.SmartShapes;
...
Timer m_Timer;
double
m_Angle;
NRangeIndicator m_RangeInidcator;
NNeedleValueIndicator m_Needle;
NMarkerValueIndicator m_Marker;
Random rand =
new
Random();
private
void
Form1_Load(
object
sender, EventArgs e)
{
nChartControl1.Panels.Clear();
NRadialGaugePanel radialGauge =
new
NRadialGaugePanel();
nChartControl1.Panels.Add(radialGauge);
radialGauge.Dock = DockStyle.Fill;
radialGauge.BeginAngle = 110;
radialGauge.SweepAngle = 320;
radialGauge.InnerRadius =
new
NLength(0);
radialGauge.AutoBorder = RadialGaugeAutoBorder.Circle;
// Gauge cap style
radialGauge.CapStyle.Size =
new
NSizeL(25, 25);
radialGauge.CapStyle.Shape.FillStyle =
new
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant1, Color.FromArgb(255, 51, 51, 51), Color.FromArgb(255, 255, 255, 255));
radialGauge.CapStyle.Shape.StrokeStyle.Width =
new
NLength(1);
radialGauge.CapStyle.Shape.StrokeStyle.Color = Color.FromArgb(255, 41, 41, 41);
radialGauge.CapStyle.Shape.ShadowStyle.Type = ShadowType.GaussianBlur;
radialGauge.CapStyle.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0);
radialGauge.CapStyle.Shape.ShadowStyle.Offset =
new
NPointL(2, 2);
radialGauge.CapStyle.Shape.ShadowStyle.FadeLength =
new
NLength(4);
radialGauge.CapStyle.Shape.ShadowStyle.Scale = 1;
// apply background effect to the gauge
NEdgeBorderStyle borderStyle =
new
NEdgeBorderStyle(BorderShape.Auto);
borderStyle.OuterBevelWidth =
new
NLength(6);
borderStyle.OuterBevelFillStyle =
new
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant2, Color.FromArgb(255, 0, 0, 0), Color.FromArgb(255, 221, 221, 221));
borderStyle.InnerBevelWidth =
new
NLength(3);
borderStyle.InnerBevelFillStyle =
new
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant1, Color.FromArgb(255, 0, 0, 0), Color.FromArgb(255, 221, 221, 221));
borderStyle.MiddleBevelWidth =
new
NLength(0);
radialGauge.BorderStyle = borderStyle;
radialGauge.BackgroundFillStyle =
new
NColorFillStyle(Color.Gray);
// apply glass effect to the gauge
NGlassEffectStyle glass =
new
NGlassEffectStyle();
glass.CornerRounding =
new
NLength(10);
glass.DarkColor = Color.FromArgb(200, Color.LightGray);
glass.LightColor = Color.FromArgb(200, Color.White);
glass.EdgeDepth =
new
NLength(6);
glass.EdgeOffset =
new
NLength(1);
glass.LightDirection = -39;
glass.LightSpread = 66;
radialGauge.PaintEffect = glass;
// add needle indicators
m_Needle =
new
NNeedleValueIndicator();
m_Needle.Value = 74;
m_Needle.OffsetFromScale =
new
NLength(-18);
m_Needle.Width =
new
NLength(8);
m_Needle.Shape.FillStyle =
new
NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant2, Color.FromArgb(255, 255, 255, 255), Color.FromArgb(255, 153, 0, 0));
m_Needle.Shape.StrokeStyle.Color = Color.FromArgb(255, 165, 0, 33);
m_Needle.Shape.ShadowStyle.Type = ShadowType.GaussianBlur;
m_Needle.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0);
m_Needle.Shape.ShadowStyle.Offset =
new
NPointL(2, 2);
m_Needle.Shape.ShadowStyle.FadeLength =
new
NLength(4);
m_Needle.Shape.ShadowStyle.Scale = 1;
m_Needle.DampeningInterval = 20;
m_Needle.DampeningSteps = 50;
m_Needle.EnableDampening =
true
;
radialGauge.Indicators.Add(m_Needle);
// add marker indicators
m_Marker =
new
NMarkerValueIndicator();
m_Marker.Value = 90;
N2DSmartShapeFactory factory =
new
N2DSmartShapeFactory(m_Marker.Shape.FillStyle, m_Marker.Shape.StrokeStyle, m_Marker.Shape.ShadowStyle);
m_Marker.Shape = factory.CreateShape(SmartShape2D.InvertedTriangle);
m_Marker.OffsetFromScale =
new
NLength(-25);
m_Marker.Width =
new
NLength(8);
m_Marker.Height =
new
NLength(10);
m_Marker.Shape.FillStyle =
new
NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant2, Color.FromArgb(255, 119, 255, 119), Color.FromArgb(255, 0, 128, 0));
m_Marker.Shape.StrokeStyle.Color = Color.FromArgb(255, 0, 102, 0);
m_Marker.Shape.ShadowStyle.Type = ShadowType.GaussianBlur;
m_Marker.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0);
m_Marker.Shape.ShadowStyle.Offset =
new
NPointL(-2, -2);
m_Marker.Shape.ShadowStyle.FadeLength =
new
NLength(4);
m_Marker.Shape.ShadowStyle.Scale = 1;
m_Marker.DampeningInterval = 10;
m_Marker.DampeningSteps = 10;
m_Marker.EnableDampening =
true
;
radialGauge.Indicators.Add(m_Marker);
// add range indicator
m_RangeInidcator =
new
NRangeIndicator();
m_RangeInidcator.PaintOrder = IndicatorPaintOrder.BeforeScale;
m_RangeInidcator.OffsetFromScale =
new
NLength(-20);
m_RangeInidcator.Value = 79;
m_RangeInidcator.BeginWidth =
new
NLength(1);
m_RangeInidcator.EndWidth =
new
NLength(10);
m_RangeInidcator.StrokeStyle.Width =
new
NLength(0);
m_RangeInidcator.FillStyle =
new
NGradientFillStyle(GradientStyle.StartToEnd, GradientVariant.Variant2, Color.FromArgb(255, 204, 0, 0), Color.FromArgb(1, 255, 255, 255));
m_RangeInidcator.DampeningInterval = 20;
m_RangeInidcator.DampeningSteps = 10;
m_RangeInidcator.EnableDampening =
true
;
radialGauge.Indicators.Add(m_RangeInidcator);
// configure axis
NGaugeAxis axis = (NGaugeAxis)radialGauge.Axes[0];
axis.Range =
new
NRange1DD(0, 100);
// modify the anchor so that labels appear after the scale
axis.Anchor =
new
NDockGaugeAxisAnchor(GaugeAxisDockZone.Top,
true
, RulerOrientation.Left, 3, 97);
// configure and apply settings to the gauge scale
NStandardScaleConfigurator scale = (NStandardScaleConfigurator)axis.ScaleConfigurator;
scale.RulerStyle.Shape = ScaleLevelShape.Bar;
scale.RulerStyle.Height =
new
NLength(3);
scale.RulerStyle.Offset =
new
NLength(0);
scale.RulerStyle.BorderStyle.Width =
new
NLength(0);
scale.RulerStyle.FillStyle =
new
NColorFillStyle(Color.White);
scale.LabelStyle.TextStyle.FontStyle =
new
NFontStyle(
"Verdana"
, 8, FontStyle.Bold);
scale.LabelStyle.TextStyle.ShadowStyle.Type = ShadowType.GaussianBlur;
scale.LabelStyle.TextStyle.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0);
scale.LabelStyle.TextStyle.ShadowStyle.Offset =
new
NPointL(1, 1);
scale.LabelStyle.TextStyle.ShadowStyle.FadeLength =
new
NLength(1);
scale.LabelStyle.TextStyle.ShadowStyle.Scale = 1;
scale.LabelStyle.TextStyle.FillStyle =
new
NColorFillStyle(Color.White);
scale.LabelStyle.Angle =
new
NScaleLabelAngle(ScaleLabelAngleMode.View, 0,
true
);
scale.LabelStyle.Offset =
new
NLength(0);
// configure the scale ticks
scale.OuterMajorTickStyle.Visible =
false
;
scale.OuterMinorTickStyle.Visible =
false
;
scale.MajorTickMode = MajorTickMode.AutoMinDistance;
scale.MinTickDistance =
new
NLength(25);
scale.MinorTickCount = 3;
scale.InnerMajorTickStyle.Shape = ScaleTickShape.Triangle;
scale.InnerMajorTickStyle.Length =
new
NLength(10);
scale.InnerMajorTickStyle.Width =
new
NLength(3);
scale.InnerMajorTickStyle.LineStyle.Width =
new
NLength(0);
scale.InnerMajorTickStyle.FillStyle =
new
NColorFillStyle(Color.White);
scale.InnerMajorTickStyle.Offset =
new
NLength(0);
scale.InnerMinorTickStyle.Shape = ScaleTickShape.Ellipse;
scale.InnerMinorTickStyle.Length =
new
NLength(2);
scale.InnerMinorTickStyle.Width =
new
NLength(2);
scale.InnerMinorTickStyle.LineStyle.Width =
new
NLength(0);
scale.InnerMinorTickStyle.FillStyle =
new
NColorFillStyle(Color.White);
scale.InnerMinorTickStyle.Offset =
new
NLength(-1);
nChartControl1.AutoRefresh =
true
;
m_Timer =
new
Timer();
m_Timer.Interval = 500;
m_Timer.Start();
m_Timer.Tick +=
new
EventHandler(m_Timer_Tick);
}
void
m_Timer_Tick(
object
sender, EventArgs e)
{
m_Angle += Math.PI / 180.0;
m_RangeInidcator.Value = 50 + Math.Sin(m_Angle) * (20 + rand.Next(30));
m_Needle.Value = 50 + Math.Sin(m_Angle) * (30 + rand.Next(20));
m_Marker.Value = 50 + Math.Sin(m_Angle) * (30 + rand.Next(20));
nChartControl1.Refresh();
}
[VB.NET]
Imports
Nevron.Chart
Imports
Nevron.GraphicsCore
Imports
Nevron.SmartShapes
...
Dim
m_Timer
As
Timer
Dim
m_Angle
As
Double
Dim
m_RangeInidcator
As
NRangeIndicator
Dim
m_Needle
As
NNeedleValueIndicator
Dim
m_Marker
As
NMarkerValueIndicator
Dim
rand
As
New
Random()
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
NChartControl1.Panels.Clear()
Dim
radialGauge
As
New
NRadialGaugePanel()
NChartControl1.Panels.Add(radialGauge)
radialGauge.Dock = DockStyle.Fill
radialGauge.BeginAngle = 110
radialGauge.SweepAngle = 320
radialGauge.InnerRadius =
New
NLength(0)
radialGauge.AutoBorder = RadialGaugeAutoBorder.Circle
' Gauge cap style
radialGauge.CapStyle.Size =
New
NSizeL(25, 25)
radialGauge.CapStyle.Shape.FillStyle =
New
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant1, Color.FromArgb(255, 51, 51, 51), Color.FromArgb(255, 255, 255, 255))
radialGauge.CapStyle.Shape.StrokeStyle.Width =
New
NLength(1)
radialGauge.CapStyle.Shape.StrokeStyle.Color = Color.FromArgb(255, 41, 41, 41)
radialGauge.CapStyle.Shape.ShadowStyle.Type = ShadowType.GaussianBlur
radialGauge.CapStyle.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0)
radialGauge.CapStyle.Shape.ShadowStyle.Offset =
New
NPointL(2, 2)
radialGauge.CapStyle.Shape.ShadowStyle.FadeLength =
New
NLength(4)
radialGauge.CapStyle.Shape.ShadowStyle.Scale = 1
' apply background effect to the gauge
Dim
borderStyle
As
New
NEdgeBorderStyle(BorderShape.
Auto
)
borderStyle.OuterBevelWidth =
New
NLength(6)
borderStyle.OuterBevelFillStyle =
New
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant2, Color.FromArgb(255, 0, 0, 0), Color.FromArgb(255, 221, 221, 221))
borderStyle.InnerBevelWidth =
New
NLength(3)
borderStyle.InnerBevelFillStyle =
New
NGradientFillStyle(GradientStyle.DiagonalUp, GradientVariant.Variant1, Color.FromArgb(255, 0, 0, 0), Color.FromArgb(255, 221, 221, 221))
borderStyle.MiddleBevelWidth =
New
NLength(0)
radialGauge.BorderStyle = borderStyle
radialGauge.BackgroundFillStyle =
New
NColorFillStyle(Color.Gray)
' apply glass effect to the gauge
Dim
glass
As
New
NGlassEffectStyle()
glass.CornerRounding =
New
NLength(10)
glass.DarkColor = Color.FromArgb(200, Color.LightGray)
glass.LightColor = Color.FromArgb(200, Color.White)
glass.EdgeDepth =
New
NLength(6)
glass.EdgeOffset =
New
NLength(1)
glass.LightDirection = -39
glass.LightSpread = 66
radialGauge.PaintEffect = glass
' add needle indicators
m_Needle =
New
NNeedleValueIndicator()
m_Needle.Value = 74
m_Needle.OffsetFromScale =
New
NLength(-18)
m_Needle.Width =
New
NLength(8)
m_Needle.Shape.FillStyle =
New
NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant2, Color.FromArgb(255, 255, 255, 255), Color.FromArgb(255, 153, 0, 0))
m_Needle.Shape.StrokeStyle.Color = Color.FromArgb(255, 165, 0, 33)
m_Needle.Shape.ShadowStyle.Type = ShadowType.GaussianBlur
m_Needle.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0)
m_Needle.Shape.ShadowStyle.Offset =
New
NPointL(2, 2)
m_Needle.Shape.ShadowStyle.FadeLength =
New
NLength(4)
m_Needle.Shape.ShadowStyle.Scale = 1
m_Needle.DampeningInterval = 20
m_Needle.DampeningSteps = 50
m_Needle.EnableDampening =
True
radialGauge.Indicators.Add(m_Needle)
' add marker indicators
m_Marker =
New
NMarkerValueIndicator()
m_Marker.Value = 90
Dim
factory
As
New
N2DSmartShapeFactory(m_Marker.Shape.FillStyle, m_Marker.Shape.StrokeStyle, m_Marker.Shape.ShadowStyle)
m_Marker.Shape = factory.CreateShape(SmartShape2D.InvertedTriangle)
m_Marker.OffsetFromScale =
New
NLength(-25)
m_Marker.Width =
New
NLength(8)
m_Marker.Height =
New
NLength(10)
m_Marker.Shape.FillStyle =
New
NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant2, Color.FromArgb(255, 119, 255, 119), Color.FromArgb(255, 0, 128, 0))
m_Marker.Shape.StrokeStyle.Color = Color.FromArgb(255, 0, 102, 0)
m_Marker.Shape.ShadowStyle.Type = ShadowType.GaussianBlur
m_Marker.Shape.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0)
m_Marker.Shape.ShadowStyle.Offset =
New
NPointL(-2, -2)
m_Marker.Shape.ShadowStyle.FadeLength =
New
NLength(4)
m_Marker.Shape.ShadowStyle.Scale = 1
m_Marker.DampeningInterval = 10
m_Marker.DampeningSteps = 10
m_Marker.EnableDampening =
True
radialGauge.Indicators.Add(m_Marker)
' add range indicator
m_RangeInidcator =
New
NRangeIndicator()
m_RangeInidcator.PaintOrder = IndicatorPaintOrder.BeforeScale
m_RangeInidcator.OffsetFromScale =
New
NLength(-20)
m_RangeInidcator.Value = 79
m_RangeInidcator.BeginWidth =
New
NLength(1)
m_RangeInidcator.EndWidth =
New
NLength(10)
m_RangeInidcator.StrokeStyle.Width =
New
NLength(0)
m_RangeInidcator.FillStyle =
New
NGradientFillStyle(GradientStyle.StartToEnd, GradientVariant.Variant2, Color.FromArgb(255, 204, 0, 0), Color.FromArgb(1, 255, 255, 255))
m_RangeInidcator.DampeningInterval = 20
m_RangeInidcator.DampeningSteps = 10
m_RangeInidcator.EnableDampening =
True
radialGauge.Indicators.Add(m_RangeInidcator)
' configure axis
Dim
axis
As
NGaugeAxis =
DirectCast
(radialGauge.Axes(0), NGaugeAxis)
axis.Range =
New
NRange1DD(0, 100)
' modify the anchor so that labels appear after the scale
axis.Anchor =
New
NDockGaugeAxisAnchor(GaugeAxisDockZone.Top,
True
, RulerOrientation.Left, 3, 97)
' configure and apply settings to the gauge scale
Dim
scale
As
NStandardScaleConfigurator =
DirectCast
(axis.ScaleConfigurator, NStandardScaleConfigurator)
scale.RulerStyle.Shape = ScaleLevelShape.Bar
scale.RulerStyle.Height =
New
NLength(3)
scale.RulerStyle.Offset =
New
NLength(0)
scale.RulerStyle.BorderStyle.Width =
New
NLength(0)
scale.RulerStyle.FillStyle =
New
NColorFillStyle(Color.White)
scale.LabelStyle.TextStyle.FontStyle =
New
NFontStyle(
"Verdana"
, 8, FontStyle.Bold)
scale.LabelStyle.TextStyle.ShadowStyle.Type = ShadowType.GaussianBlur
scale.LabelStyle.TextStyle.ShadowStyle.Color = Color.FromArgb(125, 0, 0, 0)
scale.LabelStyle.TextStyle.ShadowStyle.Offset =
New
NPointL(1, 1)
scale.LabelStyle.TextStyle.ShadowStyle.FadeLength =
New
NLength(1)
scale.LabelStyle.TextStyle.ShadowStyle.Scale = 1
scale.LabelStyle.TextStyle.FillStyle =
New
NColorFillStyle(Color.White)
scale.LabelStyle.Angle =
New
NScaleLabelAngle(ScaleLabelAngleMode.View, 0,
True
)
scale.LabelStyle.Offset =
New
NLength(0)
' configure the scale ticks
scale.OuterMajorTickStyle.Visible =
False
scale.OuterMinorTickStyle.Visible =
False
scale.MajorTickMode = MajorTickMode.AutoMinDistance
scale.MinTickDistance =
New
NLength(25)
scale.MinorTickCount = 3
scale.InnerMajorTickStyle.Shape = ScaleTickShape.Triangle
scale.InnerMajorTickStyle.Length =
New
NLength(10)
scale.InnerMajorTickStyle.Width =
New
NLength(3)
scale.InnerMajorTickStyle.LineStyle.Width =
New
NLength(0)
scale.InnerMajorTickStyle.FillStyle =
New
NColorFillStyle(Color.White)
scale.InnerMajorTickStyle.Offset =
New
NLength(0)
scale.InnerMinorTickStyle.Shape = ScaleTickShape.Ellipse
scale.InnerMinorTickStyle.Length =
New
NLength(2)
scale.InnerMinorTickStyle.Width =
New
NLength(2)
scale.InnerMinorTickStyle.LineStyle.Width =
New
NLength(0)
scale.InnerMinorTickStyle.FillStyle =
New
NColorFillStyle(Color.White)
scale.InnerMinorTickStyle.Offset =
New
NLength(-1)
NChartControl1.AutoRefresh =
True
m_Timer =
New
Timer()
m_Timer.Interval = 500
m_Timer.Start()
AddHandler
m_Timer.Tick,
AddressOf
m_Timer_Tick
End
Sub
Private
Sub
m_Timer_Tick(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
m_Angle += Math.PI / 180.0
m_RangeInidcator.Value = 50 + Math.Sin(m_Angle) * (20 + rand.[
Next
](30))
m_Needle.Value = 50 + Math.Sin(m_Angle) * (30 + rand.[
Next
](20))
m_Marker.Value = 50 + Math.Sin(m_Angle) * (30 + rand.[
Next
](20))
nChartControl1.Refresh()
End
Sub