WPF中文网

Line线段

Line(线段)继承于Shape,它自身只有4个属性,分别用于定义线段两端的端点坐标。

public sealed class Line : Shape
{
    public static readonly DependencyProperty X1Property;
    public static readonly DependencyProperty Y1Property;
    public static readonly DependencyProperty X2Property;
    public static readonly DependencyProperty Y2Property;

    public Line();

    public double X1 { get; set; }
    public double Y1 { get; set; }
    public double X2 { get; set; }
    public double Y2 { get; set; }
    protected override Geometry DefiningGeometry { get; }
}

其中X1,Y1表示第一个点坐标,X2,Y2表示第二个点坐标。

下面的属性位于Shape基类,在Line线段中设置后,会有意想不到的效果。

StrokeStartLineCap属性:表示线段前头的开关。

Stroke:线条颜色。

StrokeThickness:线条宽度。

StrokeDashArray:设置虚线。

StrokeDashOffset:虚线位置偏移量。

接下来,我们以一个示例来说明Line的用法。

前端代码

<Window x:Class="HelloWorld.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:HelloWorld"
        mc:Ignorable="d"
        Title="WPF中文网 - wpfsoft.com - Line课程" Height="350" Width="500">
    <Canvas x:Name="canvas">
        <Line x:Name="flowLine" 
              X1="20" 
              Y1="40" 
              X2="400" 
              Y2="100" 
              StrokeDashArray="2,1" 
              Stroke="Green" 
              StrokeThickness="8"/>
        <Line X1="{Binding ElementName=x1,Path=Value}"
              Y1="{Binding ElementName=y1,Path=Value}"
              X2="{Binding ElementName=x2,Path=Value}"
              Y2="{Binding ElementName=y2,Path=Value}"
              StrokeStartLineCap="Round"
              Stroke="Red"
              StrokeThickness="5"/>
        <Slider x:Name="x1" 
                Value="10" 
                Maximum="450" 
                Width="450" 
                Canvas.Left="10" 
                Canvas.Top="237"/>
        <Slider x:Name="y1" 
                Value="10" 
                Maximum="450" 
                Width="450" 
                Canvas.Left="10" 
                Canvas.Top="256"/>
        <Slider x:Name="x2" 
                Value="300" 
                Maximum="450" 
                Width="450" 
                Canvas.Left="10" 
                Canvas.Top="276"/>
        <Slider x:Name="y2" 
                Value="300" 
                Maximum="450" 
                Width="450" 
                Canvas.Left="10" 
                Canvas.Top="295"/>
    </Canvas>
</Window>

后端代码

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Loaded += (s, e) =>
        {
            int number = 10;
            Task.Run(() =>
            {
                while (true)
                {
                    if (number == 1)
                        number = 10;
                    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        flowLine.StrokeDashOffset = number;
                    }));
                    number--;
                    Thread.Sleep(250);
                }
            });
        };
    }
}

在XAML代码中,我们实例化了两个Line,其中一个Line的端点坐标绑定了4个Slider的Value属性,可以通过滑动改变线条的位置,第二Line设置为虚线,并通过C#代码开辟子线程,在子线程中通过动态设置StrokeDashOffset属性,来模拟流动的线段效果。

当前课程源码下载:(注明:本站所有源代码请按标题搜索)
文件名:079-《Line线段》-源代码
链接:https://pan.baidu.com/s/1yu-q4tUtl0poLVgmcMfgBA
提取码:wpff

——重庆教主 2023年10月17日

copyright @重庆教主 WPF中文网 联系站长:(QQ)23611316 (微信)movieclip (QQ群).NET小白课堂:864486030 | 本文由WPF中文网原创发布,谢绝转载 渝ICP备2023009518号-1