How can I help you?
Animation in WinUI linear Gauge (Linear Gauge)
21 Aug 202315 minutes to read
Pointer animation
The EnableAnimation property of pointer allows to enable or disable animation for the pointer.
<gauge:SfLinearGauge>
<gauge:SfLinearGauge.Axis>
<gauge:LinearAxis Interval="10"
MinorTicksPerInterval="4">
<gauge:LinearAxis.BarPointers>
<gauge:BarPointer Value="60"
EnableAnimation="True" />
</gauge:LinearAxis.BarPointers>
<gauge:LinearAxis.MarkerPointers>
<gauge:LinearShapePointer Value="60"
VerticalAnchor="End"
OffsetPoint="0,-3"
EnableAnimation="True" />
<gauge:LinearContentPointer Value="60"
VerticalAnchor="End"
OffsetPoint="0,-23"
EnableAnimation="True">
<gauge:LinearContentPointer.Content>
<TextBlock Text="60%" />
</gauge:LinearContentPointer.Content>
</gauge:LinearContentPointer>
</gauge:LinearAxis.MarkerPointers>
</gauge:LinearAxis>
</gauge:SfLinearGauge.Axis>
</gauge:SfLinearGauge>SfLinearGauge sfLinearGauge = new SfLinearGauge();
sfLinearGauge.Axis.Interval = 10;
sfLinearGauge.Axis.MinorTicksPerInterval = 4;
BarPointer barPointer1 = new BarPointer();
barPointer1.Value = 60;
barPointer1.EnableAnimation = true;
sfLinearGauge.Axis.BarPointers.Add(barPointer1);
LinearShapePointer shapePointer1 = new LinearShapePointer();
shapePointer1.Value = 60;
shapePointer1.VerticalAnchor = GaugeAnchor.End;
shapePointer1.OffsetPoint = new Point(0, -3);
shapePointer1.EnableAnimation = true;
sfLinearGauge.Axis.MarkerPointers.Add(shapePointer1);
LinearContentPointer linearContentPointer1 = new LinearContentPointer();
linearContentPointer1.Value = 60;
linearContentPointer1.VerticalAnchor = GaugeAnchor.End;
linearContentPointer1.OffsetPoint = new Point(0, -23);
linearContentPointer1.Content = new TextBlock { Text = "60%" };
linearContentPointer1.EnableAnimation = true;
sfLinearGauge.Axis.MarkerPointers.Add(linearContentPointer1);
this.Content = sfLinearGauge;
Animation duration
The AnimationDuration property of pointer allows to control the animation duration (in milliseconds). The default value of animation duration is 1500ms.
<gauge:SfLinearGauge>
<gauge:SfLinearGauge.Axis>
<gauge:LinearAxis Interval="10"
MinorTicksPerInterval="4">
<gauge:LinearAxis.BarPointers>
<gauge:BarPointer Value="60"
EnableAnimation="True"
AnimationDuration="3000" />
</gauge:LinearAxis.BarPointers>
<gauge:LinearAxis.MarkerPointers>
<gauge:LinearShapePointer Value="60"
VerticalAnchor="End"
OffsetPoint="0,-3"
EnableAnimation="True"
AnimationDuration="3000" />
<gauge:LinearContentPointer Value="60"
VerticalAnchor="End"
OffsetPoint="0,-23"
EnableAnimation="True"
AnimationDuration="3000">
<gauge:LinearContentPointer.Content>
<TextBlock Text="60%" />
</gauge:LinearContentPointer.Content>
</gauge:LinearContentPointer>
</gauge:LinearAxis.MarkerPointers>
</gauge:LinearAxis>
</gauge:SfLinearGauge.Axis>
</gauge:SfLinearGauge>SfLinearGauge sfLinearGauge = new SfLinearGauge();
sfLinearGauge.Axis.Interval = 10;
sfLinearGauge.Axis.MinorTicksPerInterval = 4;
BarPointer barPointer1 = new BarPointer();
barPointer1.Value = 60;
barPointer1.EnableAnimation = true;
barPointer1.AnimationDuration = 3000;
sfLinearGauge.Axis.BarPointers.Add(barPointer1);
LinearShapePointer shapePointer1 = new LinearShapePointer();
shapePointer1.Value = 60;
shapePointer1.VerticalAnchor = GaugeAnchor.End;
shapePointer1.OffsetPoint = new Point(0, -3);
shapePointer1.EnableAnimation = true;
shapePointer1.AnimationDuration = 3000;
sfLinearGauge.Axis.MarkerPointers.Add(shapePointer1);
LinearContentPointer linearContentPointer1 = new LinearContentPointer();
linearContentPointer1.Value = 60;
linearContentPointer1.VerticalAnchor = GaugeAnchor.End;
linearContentPointer1.OffsetPoint = new Point(0, -23);
linearContentPointer1.Content = new TextBlock { Text = "60%" };
linearContentPointer1.EnableAnimation = true;
linearContentPointer1.AnimationDuration = 3000;
sfLinearGauge.Axis.MarkerPointers.Add(linearContentPointer1);
this.Content = sfLinearGauge;
Animation easing function
The AnimationDuration property of pointer allows you to change the easing function. The default value of AnimationDuration property is null.
<gauge:SfLinearGauge>
<gauge:SfLinearGauge.Axis>
<gauge:LinearAxis Interval="10"
MinorTicksPerInterval="4">
<gauge:LinearAxis.BarPointers>
<gauge:BarPointer Value="70"
EnableAnimation="True"
AnimationDuration="3000">
<gauge:BarPointer.AnimationEasingFunction>
<CircleEase EasingMode="EaseIn" />
</gauge:BarPointer.AnimationEasingFunction>
</gauge:BarPointer>
</gauge:LinearAxis.BarPointers>
<gauge:LinearAxis.MarkerPointers>
<gauge:LinearShapePointer Value="70"
VerticalAnchor="End"
OffsetPoint="0,-3"
EnableAnimation="True"
AnimationDuration="3000">
<gauge:LinearShapePointer.AnimationEasingFunction>
<CircleEase EasingMode="EaseIn" />
</gauge:LinearShapePointer.AnimationEasingFunction>
</gauge:LinearShapePointer>
<gauge:LinearContentPointer Value="70"
VerticalAnchor="End"
OffsetPoint="0,-23"
EnableAnimation="True"
AnimationDuration="3000">
<gauge:LinearContentPointer.AnimationEasingFunction>
<CircleEase EasingMode="EaseIn" />
</gauge:LinearContentPointer.AnimationEasingFunction>
<gauge:LinearContentPointer.Content>
<TextBlock Text="70%" />
</gauge:LinearContentPointer.Content>
</gauge:LinearContentPointer>
</gauge:LinearAxis.MarkerPointers>
</gauge:LinearAxis>
</gauge:SfLinearGauge.Axis>
</gauge:SfLinearGauge>SfLinearGauge sfLinearGauge = new SfLinearGauge();
sfLinearGauge.Axis.Interval = 10;
sfLinearGauge.Axis.MinorTicksPerInterval = 4;
BarPointer barPointer1 = new BarPointer();
barPointer1.Value = 70;
barPointer1.EnableAnimation = true;
barPointer1.AnimationDuration = 3000;
barPointer1.AnimationEasingFunction = new CircleEase { EasingMode = EasingMode.EaseIn };
sfLinearGauge.Axis.BarPointers.Add(barPointer1);
LinearShapePointer shapePointer1 = new LinearShapePointer();
shapePointer1.Value = 70;
shapePointer1.VerticalAnchor = GaugeAnchor.End;
shapePointer1.OffsetPoint = new Point(0, -3);
shapePointer1.EnableAnimation = true;
shapePointer1.AnimationDuration = 3000;
shapePointer1.AnimationEasingFunction = new CircleEase { EasingMode = EasingMode.EaseIn };
sfLinearGauge.Axis.MarkerPointers.Add(shapePointer1);
LinearContentPointer linearContentPointer1 = new LinearContentPointer();
linearContentPointer1.Value = 70;
linearContentPointer1.VerticalAnchor = GaugeAnchor.End;
linearContentPointer1.OffsetPoint = new Point(0, -23);
linearContentPointer1.Content = new TextBlock { Text = "70%" };
linearContentPointer1.EnableAnimation = true;
linearContentPointer1.AnimationDuration = 3000;
linearContentPointer1.AnimationEasingFunction = new CircleEase { EasingMode = EasingMode.EaseIn };
sfLinearGauge.Axis.MarkerPointers.Add(linearContentPointer1);
this.Content = sfLinearGauge;
NOTE
Refer to this EasingFunctionBase, to learn more about available easing functions in WinUI.