WPF实现环(圆)形进度条

     WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织

 前言,接着上一篇圆形菜单。

欢迎转发、分享、点赞、在看,谢谢~。  

01

效果预览

效果预览(更多效果请下载源码体验):

02


代码如下

一、CircularProgressBar.cs代码如下:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;namespace WpfCircularProgressBar
{public partial class CircularProgressBar : ProgressBar{public CircularProgressBar(){this.ValueChanged += CircularProgressBar_ValueChanged;}void CircularProgressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){CircularProgressBar bar = sender as CircularProgressBar;double currentAngle = bar.Angle;double targetAngle = e.NewValue / bar.Maximum * 359.999;DoubleAnimation anim = new DoubleAnimation(currentAngle, targetAngle, TimeSpan.FromMilliseconds(500));bar.BeginAnimation(CircularProgressBar.AngleProperty, anim, HandoffBehavior.SnapshotAndReplace);}public double Angle{get { return (double)GetValue(AngleProperty); }set { SetValue(AngleProperty, value); }}public static readonly DependencyProperty AngleProperty =DependencyProperty.Register("Angle", typeof(double), typeof(CircularProgressBar), new PropertyMetadata(0.0));public double StrokeThickness{get { return (double)GetValue(StrokeThicknessProperty); }set { SetValue(StrokeThicknessProperty, value); }}public static readonly DependencyProperty StrokeThicknessProperty =DependencyProperty.Register("StrokeThickness", typeof(double), typeof(CircularProgressBar), new PropertyMetadata(10.0));public double BrushStrokeThickness{get { return (double)GetValue(BrushStrokeThicknessProperty); }set { SetValue(BrushStrokeThicknessProperty, value); }}public static readonly DependencyProperty BrushStrokeThicknessProperty =DependencyProperty.Register("BrushStrokeThickness", typeof(double), typeof(CircularProgressBar), new PropertyMetadata(1.0));}
}

二、Style.Xaml代码如下:

<Style TargetType="local:CircularProgressBar"><Setter Property="Maximum" Value="100"/><Setter Property="StrokeThickness" Value="10"/><Setter Property="Foreground" Value="Gray"/><Setter Property="Background" Value="#1FA7FC"/><Setter Property="Width" Value="100"/><Setter Property="Height" Value="100"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="local:CircularProgressBar"><Viewbox><Canvas Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"><Path Stroke="{TemplateBinding BorderBrush}"StrokeThickness="{TemplateBinding BrushStrokeThickness}"><Path.Data><PathGeometry><PathFigure StartPoint="50,0"><ArcSegment SweepDirection="Clockwise"Size="50,50"Point="49.999127335374,7.61543361704753E-09"IsLargeArc="True"></ArcSegment></PathFigure></PathGeometry></Path.Data></Path><Path Stroke="{TemplateBinding Background}" StrokeThickness="{TemplateBinding StrokeThickness}"><Path.Data><PathGeometry><PathFigure StartPoint="50,0"><ArcSegment SweepDirection="Clockwise"Size="50,50"Point="{Binding Path=Angle, Converter={StaticResource prConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType=ProgressBar}}"IsLargeArc="{Binding Path=Angle, Converter={StaticResource isLargeConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType=ProgressBar}}"></ArcSegment></PathFigure></PathGeometry></Path.Data></Path><Border Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"><TextBlock Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center"Text="{Binding Path=Value, StringFormat={}{0}%, RelativeSource={RelativeSource TemplatedParent}}"FontSize="{TemplateBinding FontSize}"/></Border></Canvas></Viewbox></ControlTemplate></Setter.Value></Setter>
</Style>

三、MainWindow.xaml代码如下:

<Window x:Class="WpfCircularProgressBar.MainWindow"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:WpfCircularProgressBar"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><UniformGrid><local:CircularProgressBar Background="#21BA9D"Value="{Binding ElementName=CirularSlider,Path=Value}"BrushStrokeThickness="2"BorderBrush="LightGray"/><local:CircularProgressBar Background="#E14D5F" BorderBrush="#42ABAC" Value="{Binding ElementName=CirularSlider,Path=Value}"BrushStrokeThickness="4"/><local:CircularProgressBar Background="#1FA7FC" BorderBrush="#D6D6D6" Value="{Binding ElementName=CirularSlider,Path=Value}"BrushStrokeThickness="10"StrokeThickness="10"Foreground="Black"/><local:CircularProgressBar Value="{Binding ElementName=CirularSlider,Path=Value}"/><Slider Minimum="0" Maximum="100" x:Name="CirularSlider" IsSnapToTickEnabled="True"VerticalAlignment="Center" Value="10"/><Image Source="gzh.png"/></UniformGrid></Grid>
</Window>

源码地址

github:https://github.com/yanjinhuagood/WPFDevelopers.git

gitee:https://gitee.com/yanjinhua/WPFDevelopers.git

WPF开发者QQ群: 340500857 

blogs: https://www.cnblogs.com/yanjinhua

Github:https://github.com/yanjinhuagood

出处:https://www.cnblogs.com/yanjinhua

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请著名作者 出处 https://github.com/yanjinhuagood

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQuery上传插件Uploadify使用详解

Uploadify是JQuery的一个上传插件&#xff0c;实现的效果非常不错&#xff0c;带进度显示。不过官方提供的实例时php版本的&#xff0c;本文将详细介绍Uploadify在Aspnet中的使用&#xff0c;您也可以点击下面的链接进行演示或下载。官方下载官方文档官方演示首先按下面的步骤来…

每日一笑 | 不忘初心,最爱扫雷~

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

在ASP.NET Core微服务架构下使用数据库切分和扩展

原文链接&#xff1a;https://itnext.io/how-to-use-database-sharding-and-scale-an-asp-net-core-microservice-architecture-22c24916590f微服务的一大优点是&#xff0c;它们可以独立扩展。本文展示了扩展一个微服务及其数据库的好处和挑战。您将创建一个示例应用程序并手动…

GridView实现数据编辑和删除(一)

2019独角兽企业重金招聘Python工程师标准>>> 前台的html代码&#xff1a; <asp:GridView ID"gv_Emplogin" runat"server" AutoGenerateColumns"False" onrowdeleting"gv_Emplogin_RowDeleting" onrowupdating"gv_…

8张图告诉你,在朋友圈发什么不会被嫌弃

爱发圈的你是否发现&#xff0c;打开朋友圈总有一些内容让你嫌弃&#xff1a;和本人真假难辨的美图自拍&#xff0c;每天十条以上的发帖&#xff0c;伪科普的转发…还有一些人你直接想删除&#xff1a;炫耀自己家的奢侈品&#xff0c;从不交摊位费的代购和微商和一日三餐都发圈…

iNeuOS工业互联网平台,在高校教学实训领域的应用

目 录1. 概述... 22. 实训柜... 23. 培训内容... 44. 二次开发培训... 51. 概述中国工业互联网从 0 向 1 演进从缺政策、缺技术、缺市场&#xff0c;逐渐转移到了缺人才&#xff0c;跨行业、跨领域的复合型人才&#xff1b;IT与OT融合型人才&#…

keepalived 原理,安装,配置

什么是Keepalived呢&#xff0c;keepalived观其名可知&#xff0c;保持存活&#xff0c;在网络里面就是保持在线了&#xff0c;也就是所谓的高可用或热备&#xff0c;用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生&#xff0c;那说到ke…

28合1智能积木,56种玩法,让孩子循序渐进“玩”出新知识

▲数据汪特别推荐点击上图进入玩酷屋小木作为一名资深积木达人&#xff0c;我可是大大小小的积木阅览无数&#xff0c;最近小木又发现一个超好玩的----28合1小卡百变积木&#xff01;小卡百变积木是小卡团队研发的一款全新概念的智能积木&#xff0c;由276颗高精度积木&#xf…

表3.5 文章管理测试用例表_本地管理表空间管理机制

表空间是一种为段&#xff08;表&#xff0c;索引等&#xff09;提供空间的逻辑结构&#xff0c;所以&#xff0c;当在表空间中增加&#xff0c;删除段的时候&#xff0c;数据库就必须跟踪这些空间的使用。如下例所示&#xff0c;假定一个新创建的表空间包含了五个表表一……表…

.NET | 多线程下的调用上下文 : CallContext

【.NET】| 总结/Edison Zhou最近在分析现在团队的项目代码&#xff08;基于.NET Framework 4.5&#xff09;&#xff0c;经常发现一个CallContext的调用&#xff0c;记得多年前的时候用到了它&#xff0c;但是印象已经不深刻了&#xff0c;于是现在来复习一下。1CallContext是个…

每日一笑 | 哪个男人到底是谁?!

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

min里所有的参数都不存在_高中生物所有的考点难点,其实都在你不仔细看的课本里,必修1-3超强记忆手册!...

对很多理科生来说&#xff0c;高中生物就是一门不是文科胜似文科的学科。很多数学、物理成绩非常突出的学生却不能在这样一门“理科”课程当中取得优势。生物老师在这门学科的提高上反复强调“回归课本”却又让很多习惯刷题的理科生不知无从下手。进入高三后&#xff0c;生物、…

我看电商(作者近三十年从事零售及电子商务管理的总结和分享)

我看电商&#xff08;作者近三十年从事零售及电子商务管理的总结和分享&#xff09; 黄若 著 ISBN 978-7-121-20268-1 2013年6月出版 定价&#xff1a;39.00元 284页 16开 编辑推荐 近年来电商行业在中国迅猛发展&#xff0c;电子商务正在日益深入的影响着越来越多人的生活。…

每日一笑 | 坐牢吗?学编程那种~

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

VMware vSphere 5.1 群集深入解析(二十六)- 数据存储维护模式汇总

VMware vSphere5.1Clustering DeepdiveHA.DRS.Storage DRS.Stretched ClustersDuncan Epping &Frank DennemanTranslate By Tim2009 / 翻译&#xff1a;Tim2009目录版权关于作者知识点前言第一部分 vSphere高可用性第一章 介绍vSphere高可用性第二章 高可用组件第三章 基本…

硕士论文研究「AI预测性取向」:化妆等因素并不影响判断

全世界只有3.14 % 的人关注了数据与算法之美2017 年&#xff0c;斯坦福大学的一篇《深度学习通过面部识别判断性取向超越人类》曾引发了极大争议&#xff0c;其通过 AI 算法仅需「看面相」即可判断一个人是不是同性恋的方法让众人感到一丝恐慌&#xff0c;也让技术研究者们对于…

[翻译]Go与C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切

Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | ServiceTitan — Titan Tech | Medium目录译者注相似性编译垃圾回收模块类、结构、接口错误处理相等性&#xff08;, !&#xff09;基础类库两种语言中存在的其他类似特…

指针易出错点一

2019独角兽企业重金招聘Python工程师标准>>> 声明指针中会遇到的问题 int* p1,p2; 上面这条语句的本意应该是声明两个指向int的指针&#xff0c;而实际的效果是p1是指针类型&#xff0c;p2却是int类型&#xff0c;这是因为在C语言中&#xff0c;声明和解释的语法并…

206块积木,72套进阶玩法!玩转STEAM教育,帮你省掉上万块的乐高课

▲数据汪特别推荐点击上图进入玩酷屋作为一名资深积木达人&#xff0c;小木我可是大大小小的积木阅览无数&#xff0c;当然乐高也不会放过&#xff0c;虽然“钱包君”已经是路人了。&#xff08;每月的工资用来买乐高~&#xff09;之前给大家推荐了一款STEM积木&#xff0c;小小…

python如何正则匹配浮点值_python使用正则搜索字符串或文件中的浮点数代码实例...

# -*- coding: utf-8 -*-#----------------------------------------------------------------------# FileName:gettxtdata.py#功能:读取字符串和文件中的数值数据(浮点数)#主要提供类似matlab中的dlmread和dlmwrite函数#同时提供loadtxtdata和savetxtdata函数#Data: 2013-1-1…