WPF中自定义漂亮的进度条

wpf中自带的进度条是这个样子德。

 

在2003中这个进度条的样子就会变得非常难看。

在wpf中您可以自己制作任意样式的进度条。如下图:

 

UserControl.xaml

 

复制代码
用户控件
<Grid x:Name="LayoutRoot" Background="Transparent"
HorizontalAlignment
="Center" VerticalAlignment="Center">

<Grid.RenderTransform>

<ScaleTransform x:Name="SpinnerScale"
ScaleX
="1.0" ScaleY="1.0" />

</Grid.RenderTransform>

<Canvas RenderTransformOrigin="0.5,0.5"
HorizontalAlignment
="Center"
VerticalAlignment
="Center"
Width
="120" Height="120" >

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="20.1696"
Canvas.Top
="9.76358"
Stretch
="Fill" Fill="Orange"
Opacity
="1.0"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="2.86816"
Canvas.Top
="29.9581" Stretch="Fill"
Fill
="Black" Opacity="0.9"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="5.03758e-006"
Canvas.Top
="57.9341" Stretch="Fill"
Fill
="Black" Opacity="0.8"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="12.1203"
Canvas.Top
="83.3163" Stretch="Fill"
Fill
="Black" Opacity="0.7"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="36.5459"
Canvas.Top
="98.138" Stretch="Fill"
Fill
="Black" Opacity="0.6"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="64.6723"
Canvas.Top
="96.8411" Stretch="Fill"
Fill
="Black" Opacity="0.5"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="87.6176"
Canvas.Top
="81.2783" Stretch="Fill"
Fill
="Black" Opacity="0.4"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="98.165"
Canvas.Top
="54.414" Stretch="Fill"
Fill
="Black" Opacity="0.3"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="92.9838"
Canvas.Top
="26.9938" Stretch="Fill"
Fill
="Black" Opacity="0.2"/>

<Ellipse Width="21.835" Height="21.862"
Canvas.Left
="47.2783"
Canvas.Top
="0.5" Stretch="Fill"
Fill
="Black" Opacity="0.1"/>

<Canvas.RenderTransform>

<RotateTransform x:Name="SpinnerRotate"
Angle
="0" />

</Canvas.RenderTransform>

<Canvas.Triggers>

<EventTrigger RoutedEvent="ContentControl.Loaded">

<BeginStoryboard>

<Storyboard>

<DoubleAnimation
Storyboard.TargetName
="SpinnerRotate"
Storyboard.TargetProperty
="(RotateTransform.Angle)"
From
="0" To="360"
Duration
="0:0:01"
RepeatBehavior
="Forever" />

</Storyboard>

</BeginStoryboard>

</EventTrigger>

</Canvas.Triggers>

</Canvas>

</Grid>
复制代码

 

 

UserControl.xaml.cs

 

复制代码
后台代码
public UserControl1()
{
InitializeComponent();

Timeline.DesiredFrameRateProperty.OverrideMetadata(
typeof(Timeline),
new FrameworkPropertyMetadata { DefaultValue = 20 });
}
复制代码

 

 

程序中添加对此用户控件的命名空间

    <Grid>
        <local:UserControl1></local:UserControl1>
    </Grid>

posted @   Sandglass  阅读(22586)  评论(11编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示