使用XAML绘制箭头

使用XAML绘制箭头,xaml,drawing,Xaml,Drawing,我不知道如何用XAML绘制箭头。我现在没有任何代码 有人能帮我用XAML代码画这幅画吗 谢谢您的帮助。您可以使用TextBlock() 我只是用手通过设定点画一个,然后用眼睛调整点: <Path Stretch="Fill" Fill="LimeGreen" Data="M 0,115 95,115 //p1, p2 (when really use remove these comments)

我不知道如何用XAML绘制箭头。我现在没有任何代码

有人能帮我用XAML代码画这幅画吗


谢谢您的帮助。

您可以使用
TextBlock
()


我只是用手通过设定点画一个,然后用眼睛调整点:

<Path Stretch="Fill" Fill="LimeGreen" 
              Data="M
              0,115   95,115   //p1, p2  (when really use remove these comments)
              65,90   85,90    //p3, p4
              120,120          //p5
                      85,150  65,150  //p6, p7
                      95,125  0,125   //p8, p9
              Z"
              HorizontalAlignment="Center"  Width="60" Height="60" />
结果是:

此外,还有一种旋转箭头的方法,下面的示例将另一个右箭头旋转180度,变成左箭头:

    <Path Stretch="Fill" Fill="LimeGreen" 
          Data="M 0,110 70,110 45,90 75,90 120,120 75,150 45,150 70,130 0,130 Z"
          HorizontalAlignment="Right"  Width="30" Height="24" Margin="0,0,2,0"
          RenderTransformOrigin=".5,.5">
        <Path.RenderTransform>
            <RotateTransform Angle="180" />
        </Path.RenderTransform>
    </Path>

碰巧有一个不错的第三方库,可以免费使用,并且可能适合一些需要箭头作为行尾的使用情况

完整的代码太长,无法在这里复制,但我已在下面链接到它。我找不到此代码的任何其他存储库(例如Nuget、Github等)

第条:

简要摘录:

该文件包含一个演示程序和两个类 从形状派生的命名箭头线和箭头多段线

ArrowLine类派生自ArrowLineBase,基本上 通过定义X1、Y1、X2和Y2属性来复制线类; 箭头多段线通过定义点来复制多段线类 财产

因为箭头基本上是直线的一部分,所以它们会受到影响 通过影响线的所有特性,例如笔划, StrokeThickness、StrokeStartLineCap和StrokeLineJoin。如果你设定 IsarrowClose为true时,Fill属性开始发挥作用;这个 如果将“填充”设置为与笔刷相同的笔刷,则箭头看起来最正常 中风

上面提到的类是可以从XAML使用的控件(用C#编写)。简单的例子:

xmlns:p="clr-namespace:Petzold.Media2D;assembly=Arrowheads"

...
    
<p:ArrowLine
    X1="0"
    Y1="0"
    X2="148"
    Y2="0"
    Canvas.Top="18"
    Canvas.Left="26"
    />
xmlns:p=“clr命名空间:Petzold.Media2D;assembly=箭头”
...
示例输出:

()

请注意,Charles非常慷慨地提供了可重用的代码,如下所述:

我编写和发布的所有代码都可以在您的软件中免费使用 不受限制的项目(无论是个人项目还是商业项目)


(FAQ确实提到了一些关于出版物的限制,所以你应该完整地阅读它)。

我在谷歌上搜索过,但没有找到anything@Alexander我用谷歌搜索了一下。我来到这一页只是为了阅读你的评论。看到这里的问题了吗?如果有人能演示如何操作这个从C代码中绘制箭头的示例,那就太棒了。也就是说,操纵长度和旋转。或者更好的是,创建一个方法,通过两个点对并绘制箭头,其中一个点对是尾部,另一个点对是箭头的尖端。
Data="M 0 115 95 115 65 90 85 90 120 120 85 150 65 150 95 125 0 125 Z"
    <Path Stretch="Fill" Fill="LimeGreen" 
          Data="M 0,110 70,110 45,90 75,90 120,120 75,150 45,150 70,130 0,130 Z"
          HorizontalAlignment="Right"  Width="30" Height="24" Margin="0,0,2,0"
          RenderTransformOrigin=".5,.5">
        <Path.RenderTransform>
            <RotateTransform Angle="180" />
        </Path.RenderTransform>
    </Path>
xmlns:p="clr-namespace:Petzold.Media2D;assembly=Arrowheads"

...
    
<p:ArrowLine
    X1="0"
    Y1="0"
    X2="148"
    Y2="0"
    Canvas.Top="18"
    Canvas.Left="26"
    />