WPF----进度条ProgressBar(渐变色)

news/2024/7/8 7:36:47 标签: wpf

ProgressBar 是一种用于指示进程或任务的进度的控件,通常在图形用户界面(GUI)中使用。它提供了一种视觉反馈,显示任务的完成程度,帮助用户了解任务的进展情况。

基本特性

  1. MinimumMaximum 属性:

    • 这些属性定义进度的范围。默认情况下,Minimum 为 0,Maximum 为 100。
  2. Value 属性:

    • 这个属性表示当前进度。它应该在 MinimumMaximum 之间。
  3. IsIndeterminate 属性:

    • 如果设置为 TrueProgressBar 将显示一个动画条,而不是实际的进度值。这通常用于无法确定进度百分比的任务。

示例:自定义渐变色 ProgressBar

1. 定义渐变色 ProgressBar 样式

在资源字典或窗口资源中定义 ProgressBar 的样式:

 <Style x:Key="RoundedProgressBar" TargetType="ProgressBar">
     <Setter Property="Height" Value="28"></Setter>
     <!--<Setter Property="Width" Value="600"></Setter>-->
     <Setter Property="Foreground" Value="#E6E6E6"></Setter>
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="ProgressBar">
                 <Grid>
                     <Border x:Name="PART_Track"
                             Background="#404040"
                             CornerRadius="7"
                             BorderBrush="#666"
                             BorderThickness="1">
                         <Border x:Name="PART_Indicator"
                                 CornerRadius="7,0,0,7"
                                 HorizontalAlignment="Left"
                                 Width="0">
                             <Border.Background>
                                 <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                                     <GradientStop Color="#FF669FB1"  Offset="1.0" />
                                     <GradientStop Color="#90669FB3" Offset="0.5" />
                                     <GradientStop Color="#A6669FB1" Offset="0.35" />
                                     <GradientStop Color="#00669FB1" Offset="0.0" />
                                 </LinearGradientBrush>
                             </Border.Background>
                         </Border>
                     </Border>
                 </Grid>
                 <ControlTemplate.Triggers>
                     <Trigger Property="IsIndeterminate" Value="True">
                         <Setter TargetName="PART_Indicator" Property="Background" Value="Green"/>
                     </Trigger>
                     <Trigger Property="IsIndeterminate" Value="False">
                         <!--<Setter TargetName="PART_Indicator" Property="Width" 
                                 Value="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                 Path=ActualWidth, Converter={StaticResource ProgressWidthConverter}}"/>-->
                     </Trigger>
                 </ControlTemplate.Triggers>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>
2. 在 XAML 中使用 ProgressBar 控件:
 <Grid >
     <ProgressBar Style="{StaticResource RoundedProgressBar}"  HorizontalAlignment="Stretch"   Value="{Binding ProgressValue}"  Minimum="0" Maximum="100"  />
     <TextBlock TextAlignment="Center" Foreground="#E6E6E6" VerticalAlignment="Center" >
         <Run Text="{Binding ProgressValue}"></Run>
         <Run>%</Run></TextBlock>
 </Grid>
3. ViewModel

ViewModel 中定义一个绑定到 ProgressBar 的属性ProgressValue:

 [ObservableProperty]
 private int _progressValue = 0;
4.渐变色颜色解析

设置颜色与透明度关系

在 WPF 中,颜色的透明度是通过 ARGB (Alpha, Red, Green, Blue) 值表示的,其中 Alpha 值控制透明度。Alpha 值范围是 0 到 255,其中 0 表示完全透明,255 表示完全不透明。

如果你想要 35% 的透明度,你可以计算相应的 Alpha 值。35% 透明度意味着 65% 不透明度,因此你可以使用以下公式来计算 Alpha 值:

Alpha=255×65100=255×0.65≈166\text{Alpha} = 255 \times \frac{65}{100} = 255 \times 0.65 \approx 166Alpha=255×10065​=255×0.65≈166

因此,Alpha 值大约是 166,对应的十六进制值是 A6

所以对应的颜色值为#A6669FB1。

最终结果如下:


http://www.niftyadmin.cn/n/5536788.html

相关文章

MySQL期末答辩—仓库管理系统

仓库管理系统&#xff1a;仓库管理系统是一种基于互联网对实际仓库的管理平台&#xff0c;旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询&#xff0c;可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率&#xff…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

Python推导式写出简洁高效的代码方法详解

概要 推导式是Python中一种非常强大的语法特性,允许你用简洁的语法创建列表、字典、集合等数据结构。使用推导式不仅可以让代码更加简洁和易读,还能提高代码的执行效率。本文将详细介绍Python中的各种推导式,并提供相应的示例代码,帮助全面掌握这一强大的工具。 列表推导式…

Cherno 游戏引擎笔记 (45~60)

有几个部分的笔记以图片形式呈现&#xff08;如果没找到文本可以查看是否遗漏了图片笔记&#xff09; My Github REPO(GitHub - JJJJJJJustin/Nut: The game_engine which learned from Cherno) 源码笔记&#xff0c;希望帮到你 :-} ---Shader Library&#xff08;着色器库&…

GNU/Linux - 什么是loopback设备

在计算机科学中&#xff0c;特别是在类Unix操作系统中&#xff0c;环回设备&#xff08;loopback device&#xff09;是一种虚拟设备&#xff0c;它将一个文件映射为块设备。这使得可以像访问物理磁盘或分区一样访问一个文件。环回设备通常用于挂载磁盘镜像、操作文件系统镜像以…

Spring MVC数据绑定和响应——复杂数据绑定(四)JSON数据绑定

一、消息转换器—HttpMessageConverter接口 客户端不同的请求&#xff0c;HttpServletRequest中数据的MediaType可能会不同&#xff0c;如果想将HttpServletRequest中的数据转换成指定对象&#xff0c;或者将对象转换成指定格式的数据&#xff0c;就需要使用对应的消息转换器来…

opencv实现目标检测功能----20240704

早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。这次我们使用Opencv深度学习的功能实现目标检测的功能,模型选用MobileNetSSD_deploy.caffemodel。 模型加载…

常见网络攻击方式及防御方法

网络安全威胁的不断演变和增长&#xff0c;网络攻击的种类和数量也在不断增加&#xff0c;攻防对抗实战演练在即&#xff0c;让我们一起了解一下常见网络攻击方式及防御方法。 1. DDOS攻击&#xff08;分布式拒绝服务攻击&#xff09; 借助于C/S&#xff08;客户端/服务器&am…