前台代码:
<Grid Width="400" Height="400"> <Ellipse Stroke="Gray" StrokeThickness="15"/> <Ellipse x:Name="MyEllipse" Stroke="DeepSkyBlue" StrokeThickness="15" RenderTransformOrigin="0.5,0.5"> <Ellipse.RenderTransform> <RotateTransform Angle="-90"/> </Ellipse.RenderTransform> </Ellipse> <TextBlock x:Name="txt" Foreground="Black" FontSize="50" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock> </Grid>
后台代码:
int i = 0; int TimeCount = 90;//倒计时秒数 DispatcherTimer timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 1) }; timer.Tick += new EventHandler<object>(async (sender, e) => { await Dispatcher.TryRunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => { i += 1; double temp = (385 * Math.PI) * i / TimeCount / 15; MyEllipse.StrokeDashArray = new DoubleCollection() { temp, 1000 }; txt.Text = ((TimeCount - i)/60).ToString("00")+":"+((TimeCount - i) % 60).ToString("00"); if (i == TimeCount) timer.Stop(); })); }); timer.Start();