一直都是在博客园上看别人的分享 今天就突然心血来潮想把自己以前写的一个环形进度条分享给大家
这是我的第一篇博客,希望大家多多指教;
在这里我使用了blend里面的Arc控件 和一个定时器来控制endangle 值
项目的结构如下:

xaml代码如下:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Arc"
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing" x:Class="Arc.MainWindow"
mc:Ignorable="d"
x:Name="mainwindow"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ed:Arc ArcThickness="20" ArcThicknessUnit="Pixel" EndAngle="{Binding EndAngle,ElementName=mainwindow}" Fill="Yellow" HorizontalAlignment="Left" Margin="155.783,113.934,0,106.066" Stretch="None" Stroke="Gray" StartAngle="0" Width="100"/>
<ed:Arc ArcThickness="20" ArcThicknessUnit="Pixel" EndAngle="360" Fill="Transparent" HorizontalAlignment="Left" Margin="155.783,113.934,0,106.066" Stretch="None" Stroke="Black" StartAngle="0" Width="100"/>
</Grid>
</Window>
注意:在这里需要注意 如果你只是安装了vs但是么有blend 你需要在项目中添加Microsoft.Expression.Drawing.dll 这个类库
然后添加引用 再添加命名空间
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing" x:Class="Arc.MainWindow"这个命名空间哦
后台代码如下:
using System;
using System.Windows;
using System.Windows.Threading;
namespace Arc
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
DispatcherTimer Time = new DispatcherTimer();
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Time.Tick += new EventHandler(Time_Tick);
Time.Interval = new TimeSpan(10000);
Time.Start();
}
private void Time_Tick(object sender, EventArgs e)
{
if (EndAngle < 360)
{
EndAngle++;
}
else
{
EndAngle = 360;
}
}
public double EndAngle
{
get { return (double)GetValue(EndAngleProperty); }
set { SetValue(EndAngleProperty, value); }
}
public static readonly DependencyProperty EndAngleProperty =
DependencyProperty.Register("EndAngle", typeof(double), typeof(MainWindow), new PropertyMetadata(0d));
}
}
如果想显示进度值可以自己添加哦 在这里我就不写了
