使用XAML绘制箭头
我不知道如何用XAML绘制箭头。我现在没有任何代码 有人能帮我用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)
谢谢您的帮助。您可以使用
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"
/>