当前位置: 首页 > article >正文

WPF+MVVM案例实战(十一)- 环形进度条实现

文章目录

  • 1、运行效果
  • 2、功能实现
    • 1、文件创建与代码实现
    • 2、角度转换器实现
    • 3、命名空间引用
  • 3、源代码下载


1、运行效果

在这里插入图片描述

2、功能实现

1、文件创建与代码实现

打开 Wpf_Examples 项目,在Views 文件夹下创建 CircularProgressBar.xaml 窗体文件。
CircularProgressBar.xaml 代码实现如下:

<Window x:Class="Wpf_Examples.Views.CircularProgressBar"
        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:Wpf_Examples.Views"
        xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"
        xmlns:uc="clr-namespace:UserControlLib;assembly=UserControlLib"
        xmlns:converter="clr-namespace:Wpf_Examples.Converters"
        mc:Ignorable="d"
        Title="CircularProgressBar" Height="450" Width="800">
    <Grid>
        <ProgressBar FontSize="36" Background="#FF292929" Foreground="#FFE42424" Maximum="1" Minimum="0" SmallChange="0.01"
             Width="200" Height="200" Value="{Binding ElementName=pBar,Path=Value}">
            <ProgressBar.Template>
                <ControlTemplate TargetType="ProgressBar">
                    <ControlTemplate.Resources>
                        <converter:PercentConverter x:Key="PercentConverter"/>
                    </ControlTemplate.Resources>
                    <Grid>
                        <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=Value,StringFormat=p0}"
     VerticalAlignment="Center" HorizontalAlignment="Center"/>
                        <ed:Arc StartAngle="0" EndAngle="360" ArcThickness="16" Fill="{TemplateBinding Background}" Stretch="None"/>
                        <ed:Arc StartAngle="0" ArcThickness="16" EndAngle="{TemplateBinding Value,Converter={StaticResource PercentConverter}}" ArcThicknessUnit="Pixel" Fill="{TemplateBinding Foreground}" Stretch="None"/>
                    </Grid>
                </ControlTemplate>
            </ProgressBar.Template>
        </ProgressBar>
        <Slider Maximum="1" Minimum="0" SmallChange="0.01" x:Name="pBar"/>
    </Grid>
</Window>

2、角度转换器实现

在 Converters 文件夹下创建 PercentConverter.cs ,代码实现如下:

 public class PercentConverter : IValueConverter
 {
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
         return 360 * (double)value;
     }

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     {
         return (double)value / 360;
     }
 }

3、命名空间引用

这里命名空间 有点不好整,本人也是费了一番功夫,这里我直接下载好了,只要项目引用即可,大家可以在源代码下载中获取这个dll 文件。

  xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"

在这里插入图片描述
拿到这个Dll文件后,把它放在项目的一个文件夹下,添加引用到这个Dll 所在文件夹中选择到这个 dll,添加成功后。注意修改生成资源方式。
在这里插入图片描述
在这里插入图片描述
以上完成命名空间引用。改命名空间中 Arc 就是画圆弧的方法,只要提供起始角度和介绍角度,设置填充色即可完成圆弧绘制。

3、源代码下载

CSDN 代码下载链接:WPF 自定义环形进度条实现


http://www.kler.cn/a/370931.html

相关文章:

  • linux之进程信号(初识信号,信号的产生)
  • 【Linux 36】多路转接 - epoll
  • SpringBoot集成Mongodb
  • docker swarm 部署问题 和 指定节点部署服务
  • 自建RustDesk服务器
  • qt vs ios开发应用环境搭建和上架商店的记录
  • Flink CDC系列之:学习理解核心概念——Data Sink
  • RCNN系列算法
  • ES、BOM 和 DOM
  • java-web-day6-下-知识点小结
  • Android性能优化之2个帧率和卡顿监控方案(附实现代码)
  • 【网页内嵌PDF下载】PDF.js妙用
  • MFC tcpclient
  • STM32主从定时器输出个数、频率可调的脉冲
  • 知名数字中国战略布局与新质生产力培训师讲师培训讲师唐兴通数字经济数字化转型专家教授学者大数据AIGC大模型智能化战略数字时代商业模式创新
  • Hana 到 PostgreSQL 数据迁移同步
  • QT 从ttf文件中读取图标
  • 使用命令行自动生成markdown文档目录
  • 针对初学者的PyTorch项目推荐
  • 【论文阅读】Real-ESRGAN
  • 拥塞控制与TCP子问题(粘包问题,异常情况等)
  • OpenHarmony4.0配置应用开机自启
  • 软件工程之软件系统设计与软件开发方法
  • Pandas库学习Day20
  • 操作系统--进程
  • 大文件秒传,分片上传,断点续传