strokeDasharray 属性学习

css 属性 strokeDasharray

实现功能:
在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html>
<head>
  <style>
    .progress-ring {
      width: 200px;
      height: 200px;
      position: relative;
    }

    .progress-ring .circle {
      fill: none;
      stroke: #ddd;
      stroke-width: 20;
    }

    .progress-ring .progress {
      fill: none;
      stroke: #0d7137;
      stroke-width: 20;
      stroke-dasharray: 0, 1000;
      stroke-linecap: round;
      transition: stroke-dasharray 0.5s ease-in-out;
    }
  </style>
</head>
<body>
  <div class="progress-ring">
    <svg viewBox="0 0 100 100">
      <circle class="circle" cx="50" cy="50" r="40">22</circle>
      <circle class="progress" cx="50" cy="50" r="40"></circle>
    </svg>
  </div>
  <input type="number" id="percentageInput" placeholder="输入百分比(0-100)">
  <button onclick="updateProgress()">更新进度</button>

  <script>
    function updateProgress() {
      const percentageInput = document.getElementById('percentageInput');
      const percentage = parseInt(percentageInput.value, 10);
      /*--1. 补全代码,当输入的数据不是数字,或者超出【0,100】,当前函数返回null-----*/
        if(typeof percentage !=="number"||percentage<0||percentage>100){
            return null
            }

      const progressRing = document.querySelector('.progress-ring');
      const progressCircle = progressRing.querySelector('.progress');
        /*--2. 补全代码,计算圆周长-*/
      const circumference = 2 * Math.PI * 40;


       /*--3. 补全代码,根据输入的百分比设置圆环样式-----*/
      const offset =  percentage/100*circumference
      progressCircle.style.strokeDasharray = `${offset} ${circumference}`; 
    }
  </script>
</body>
</html>

可简单知道:
strokeDasharray ,可以传两个值=》第一个值是:实线占比,第二值是虚线占比。

官方学习该知识

<think>好的,用户想了解如何在WPF中设置或修改Rectangle控件的边框属性,特别是Stroke属性的示例。我需要先回顾一下WPF中Rectangle控件的相关属性。 首先,Rectangle属于System.Windows.Shapes命名空间,边框相关的属性主要有StrokeStrokeThickness、StrokeDashArray等。用户提到了Stroke属性,这应该是设置边框颜色的基础属性。另外,边框的粗细由StrokeThickness控制,虚线样式可以通过StrokeDashArray来定义。 接下来,我需要考虑用户可能的应用场景。用户可能需要在XAML中直接设置这些属性,或者在后台代码中动态调整。因此,我应该分别给出XAML和C#代码的示例,覆盖不同的使用情况。 然后,查看提供的引用内容。引用3提到了在后台代码中创建Rectangle并设置Stroke为Brushes.Black,Fill为SkyBlue,还设置了宽度和高度。这可以作为后台代码的示例基础。引用4中的Ellipse使用了LinearGradientBrush来设置边框颜色,这可能对高级样式设置有帮助,比如使用渐变色作为边框。 此外,引用2提到了样式和模板的使用,用户可能希望将边框样式定义为资源以便重用。因此,可以建议用户创建Style资源,统一设置多个Rectangle的边框属性,这样可以提高代码的可维护性。 接下来需要整理步骤,从基础设置到高级应用。首先介绍基本的StrokeStrokeThickness和StrokeDashArray的设置,然后展示如何在XAML和代码中实现,接着演示如何创建样式资源,最后展示使用渐变色等高级效果。 需要注意的是,用户的问题集中在边框样式,因此Fill属性虽然存在示例中,但应明确说明Stroke相关部分。同时,要确保示例代码正确,比如StrokeDashArray的正确用法,可能需要解释数组中的数值含义。 可能用户还不太清楚如何动态修改边框颜色,或者如何处理不同的边框状态(如鼠标悬停时的变化)。不过当前问题主要是设置和修改Stroke属性,因此应集中在基础设置和常见样式上,如果有高级部分可以作为扩展提及,但不要偏离主题。 最后,生成相关问题时要围绕Rectangle控件的其他属性、样式应用、动态修改等方面,帮助用户进一步学习。</think>在WPF中,通过设置Rectangle控件的`Stroke`系列属性可以定义边框样式,以下是具体设置方法及示例: ### 一、基础属性设置 1. **边框颜色**:`Stroke`属性接受Brush类型值 2. **边框粗细**:`StrokeThickness`属性(默认值1) 3. **虚线样式**:`StrokeDashArray`属性定义虚实线段比例 4. **端点样式**:`StrokeDashCap`设置虚线端点形状 ### 二、XAML实现示例 ```xml <Rectangle Width="100" Height="60" Stroke="RoyalBlue" <!-- 边框颜色 --> StrokeThickness="3" <!-- 边框粗细 --> StrokeDashArray="2 1" <!-- 虚线模式:实线2单位,间隔1单位 --> StrokeDashCap="Round" <!-- 虚线端点圆角 --> Fill="LightSteelBlue"/> ``` [^3] ### 三、后台代码实现 ```csharp var rect = new Rectangle(); rect.Stroke = Brushes.DarkSlateGray; // 使用预定义颜色画刷 rect.StrokeThickness = 2; rect.StrokeDashArray = new DoubleCollection { 4, 2 }; // 长虚线模式 rect.Fill = new SolidColorBrush(Colors.AliceBlue); ``` [^3] ### 四、进阶样式设置(使用资源字典) ```xml <Style x:Key="DashedBorderStyle" TargetType="Rectangle"> <Setter Property="Stroke" Value="#FF4081"/> <Setter Property="StrokeThickness" Value="2"/> <Setter Property="StrokeDashArray" Value="5 2"/> <Setter Property="StrokeDashCap" Value="Triangle"/> </Style> ``` 应用样式: ```xml <Rectangle Style="{StaticResource DashedBorderStyle}" Width="120" Height="80"/> ``` [^2] ### 五、渐变边框实现 ```xml <Rectangle Width="150" Height="100"> <Rectangle.Stroke> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="DarkOrange" Offset="0"/> <GradientStop Color="Gold" Offset="1"/> </LinearGradientBrush> </Rectangle.Stroke> <Rectangle.StrokeThickness>4</Rectangle.StrokeThickness> </Rectangle> ``` [^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值