WPF实现斜纹圆角进度条样式_weixin_30566111的博客-程序员宅基地

原文: WPF实现斜纹圆角进度条样式

运行效果:

进度条样式:

<!--进度条样式-->
<LinearGradientBrush x:Key="ProgressBar.Progress" StartPoint="0,-0.15" EndPoint="0.04,0.04" SpreadMethod="Reflect">
    <GradientStop Color="Transparent" Offset="0.5"/>
    <GradientStop Color="#0530A0" Offset="0.5"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="ProgressBar.Background" Color="#06276E"/>
<Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}">
    <Setter Property="Foreground" Value="{StaticResource ProgressBar.Progress}"/>
    <Setter Property="Background" Value="{StaticResource ProgressBar.Background}"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ProgressBar}">
                <Grid x:Name="TemplateRoot">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Determinate"/>
                            <VisualState x:Name="Indeterminate">
                                <Storyboard RepeatBehavior="Forever">
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Animation">
                                        <EasingDoubleKeyFrame KeyTime="0" Value="0.25"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.25"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.25"/>
                                    </DoubleAnimationUsingKeyFrames>
                                    <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="Animation">
                                        <EasingPointKeyFrame KeyTime="0" Value="-0.5,0.5"/>
                                        <EasingPointKeyFrame KeyTime="0:0:1" Value="0.5,0.5"/>
                                        <EasingPointKeyFrame KeyTime="0:0:2" Value="1.5,0.5"/>
                                    </PointAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="20" Background="{TemplateBinding Background}"/>
                    <Rectangle x:Name="PART_Track" RadiusX="20" RadiusY="20"/>
                    <Grid x:Name="PART_Indicator" ClipToBounds="true" HorizontalAlignment="Left">
                        <Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}" RadiusX="20" RadiusY="20"/>
                        <Rectangle x:Name="Animation" Fill="{TemplateBinding Foreground}" RenderTransformOrigin="0.5,0.5" RadiusX="20" RadiusY="20">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform/>
                                    <SkewTransform/>
                                    <RotateTransform/>
                                    <TranslateTransform/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                    </Grid>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="Orientation" Value="Vertical">
                        <Setter Property="LayoutTransform" TargetName="TemplateRoot">
                            <Setter.Value>
                                <RotateTransform Angle="-90"/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsIndeterminate" Value="true">
                        <Setter Property="Visibility" TargetName="Indicator" Value="Collapsed"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

控件xaml:

<ProgressBar x:Name="progressBar" Height="40" Margin="100,0,100,0" Style="{StaticResource ProgressBarStyle}" Value="60" Maximum="100" Minimum="0"></ProgressBar>

 

posted on 2019-04-16 14:33 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10716917.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30566111/article/details/98673267

智能推荐

卡西欧科学计算机使用方法,科学计算器的使用方法-程序员宅基地

功能介绍  ●计算功能:249(160) 变量:7代数:S-V.P.A.M●分数:有 统计:有 方程式:无●积分值:无 微分计算:无 复数:无●向量:无 矩阵功能:无 重现功能:多步重现●多步重现功能●自然书写显示●多步重现功能●自然规范显示●分数计算●组合和排列●统计(数据编辑,标准偏差,回归分析)●7个变量存储器●塑料按键●带有新型滑动硬壳使用注意事项●第一次使用计算器时,请确定按下on键。●..._卡西欧计算机使用教程fx95es

真心的被android中的targetSdkVersion折磨了两天。配置它一直报空指针。不兼容造成的_android 11 调整targetsdkversion不起作用-程序员宅基地

1.在AndroidManifest.xml 中不了解它的用途。我在创建项目的时候也是随便猜测的随便选择了一个。导致我在访问网络死都访问不上一直报空指针。下面总结了下他们都有什么用AndroidMenifest.xml中minSdkVersion、targetSdkVersion、targetApiLevel的区别在AndroidMenifest.xml中,常常_android 11 调整targetsdkversion不起作用

人工智能标记语言AIML聊天机器人:产生、种类、应用、实例、AIML概述、知识库、公司、业界(20k字经典收藏版)-程序员宅基地

聊天机器人(chatterbot)是一个用来模拟人类对话或聊天的程序,试图建立程序让真人认为在和另一个人聊天。在NLP/AIML技术加多样性语库支撑下,采用免费人工语言在线计算机实体ALICE人工智能标记语言(ALICE AIML)类知识库(knowledge base),可以实现功能复杂的聊天机器人。

Qt 改变布局的页面边距_qt4.8如何获取打印机页边距-程序员宅基地

qt 的布局默认给的页面布局是 5,需要在程序实现的地方更改一下,初始化的值为0layout->setContentsMargins(0, 0, 0, 0);_qt4.8如何获取打印机页边距

<5 Android数据存储> 任务二 应用程序数据文件夹里的文件读写 ,-程序员宅基地

Android中提供了两个方法用来打开应用程序的数据文件夹IO流。1.FileInputStream openFileInput(String name):参数name表示某个文件名,该方法用于打开应用程序文件夹下name文件对应的输入流。2.FileOutputStream openFileOutPut(String name,int mode):该方法用于打开应用程序的文件夹下name

xshell修改服务器json文件,【xshell属性设置】如何修改xshell字体大小-程序员宅基地

【Swift学习】Swift编程之旅---方法(十五)在Swift中结构体和枚举也能够定义方法,而在 Objective-C 中,类是唯一能定义方法的类型. 实例方法 实例方法是属于某个特定类.结构体或者枚举类型实例的方法,实例方法提供访问和修改实例属性 ...sql-in&sol;not in和exists&sol;not exists的区别In和Exists的区别 这两个函数是..._在xshell中配置json文件

随便推点

Linux服务器上监控网络带宽的18个常用命令和linux带宽流量监控查看工具_怎么从服务器上面看连接某个数据库的网速是多少-程序员宅基地

这些工具使用不同的机制来制作流量报告。nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。 下面是按功能划分的命令名称。 监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload 监控总体带宽使用(批..._怎么从服务器上面看连接某个数据库的网速是多少

[置顶] http://www.open-lib.com 一个神奇的网站-程序员宅基地

向往前端转的同学们 注意了 LZ发现了一个前端JS框架很多的地方 这个就是http://www.open-lib.com不多说 上案例HTML5视频播放框架html5media[视频插件]html5media是一个JavaScript音频/视频播放器能够让每一个浏览器都能够播放在HTML5多媒体标签中定义的多媒体文件。OIPlayer[视频插件]..._www.29777com

UICollectionView——2.环形布局(swift)_swift 半环形collectionview_不会飞的船的博客-程序员宅基地

主要步骤:添加一个class继承UICollectionViewFlowLayout添加一个数组属性,用来存放每个item的局部信息(item.frame)重写prepare方法,设置每个item的frame,并存入数组重写layoutAttributesForElements方法,并将存放item.frame信息的数组返回import UIKitimport Foundationclass CircleLayout: UICollectionViewFlowLayout { v._swift 半环形collectionview

python环境配置不成功_怎么解决python配置环境变量不成功-程序员宅基地

怎么解决python配置环境变量不成功发布时间:2020-08-25 16:02:46来源:亿速云阅读:94这期内容当中小编将会给大家带来有关怎么解决python配置环境变量不成功,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。要使用python语言,就需要有一个python的运行和开发环境。学习一门语言,环境的搭建很重要,如果环境配置有问题,那么所有的代码运行起..._python环境变量添加失败

vue-cli 中使用scss 公共样式引入单个或多个_scss公共样式-程序员宅基地

一、安装sass-resources-loadercnpm install sass-resources-loader --save-dev二、修改build/utils.jsscss: generateLoaders('sass')变成下面这样:单个引入:scss: generateLoaders('sass').concat( { loader: 'sass-resources-loader', options: { res_scss公共样式

bat脚本 拷贝文件/文件夹到目标目录_bat文件 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7-程序员宅基地

VS-C++ 系列:所有相关C++文章链接.VS-C# 系列:所有相关C#文章链接.bat 系列:所有相关bat文章链接.Keil 系列:所有相关文章链接所有内容均以最小系统调试成功;逐步提供低分源码工程下载!保证每行代码都经过验证!如有疑惑,欢迎留言,看见即回;祝好__by Dxg_LC序言:1、以上链接为方便整理查看资料用;伴随博文发布更新,如果有不正确处,感谢指正2、因本人能力有限若有不正确之处或者相关超链接失效,请于相关文章内提醒@博主;灰常感谢3、友情提醒1,勿要《一支烟 _bat文件 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7