在WPF中创建自定义“+”按钮
我一直试图在WPF中创建一个自定义加号按钮。我只想要+符号,但我没有任何运气让Path数据变量恰到好处。我已经看过了Path语法,但我仍然遇到了麻烦。在WPF中创建自定义“+”按钮
这是我迄今为止,但实在是太大了。我需要一个更小,更比例的按钮:
<Path
Stretch="Fill"
Opacity="1"
x:Name="path"
StrokeThickness="10"
RenderTransformOrigin="0.5,0.5" Margin="39,56.75,39,65.25" Data="M0,5L10,5 M5,5L5,1z" >
任何人都可以告诉我我在这里有什么错吗?
感谢
尝试了这一点的路径 -
<Path Stretch="Fill"
Fill="Black"
Stroke="{x:Null}"
StrokeThickness="0.5"
Data="M3.875,0 L5.125,0 5.125,3.875 9,3.875 9,5.125 5.125,5.125 5.125,9 3.875,9 3.875,5.125 0,5.125 0,3.875 3.875,3.875 3.875,0 z" />
谢谢,这是我所需要的。你是怎么想出所有这些要点的? – Encryption
@加密:我手工猜测,可能是试验和错误。或者他们以72宽度/高度开始,使有效的交叉线宽度为10,并从那里做数学,当它们完成时除以8。它追踪“+”形状的边缘。如果将这些坐标用手绘制在纸上,形状将变得更加明显。 –
可以使用Data
属性这样
<Button>
<Path Data="M0.5,0 L0.5,1 M0,0.5 L1,0.5"
StrokeThickness="4"
Stretch="Fill"
Stroke="Red" />
</Button>
貌似这个
编辑
如果你想在管线盖到达的边缘你可以设置
StrokeEndLineCap="Square"
StrokeStartLineCap="Square"
感谢这也为我工作。不知道为什么您的解决方案的数据点比RV1987少。我无法理解路径标记如何工作我猜。 – Encryption
它们是相对点,所以无论它有多大,十字将总是伸展以填充“Button”。只需要四个值。 1.移至(x,y)(0.5,0)。 2.画线到(x,y)(0.5,1)。你有垂直线。然后将指针移动到(x,y)(0,0.5)并画一条线到(x,y)(1,0.5)。有你的水平线 –
@Encryption:这使用笔画创建十字架本身,它只需要两条线段。 RV1987的答案描绘了十字的轮廓,它要求你指定十字(十二)边缘周围的所有线段。这个答案在两条线段之间拾取笔,而RV1987的答案没有拿起笔(它不需要,因为它们是端对端连接的)。 –
我知道这似乎是愚蠢的,但对于刚刚使用包含在一个大的字体大小+字符一个TextBlock?
+1;这是一个很好的选项,它使按钮看起来像Firefox的“新标签”按钮。我也推荐粗体字体。 –
这将工作,但我需要按钮有动画像我的其他按钮做。使用story_board来获取我想要的动画类型将不适用于您所描述的内容 – Encryption
我知道你想使用绘图路径,可能会想这应该是一个解决方案。该解决方案可能会有助于您未来的工作。但是这里有一个替代方案,它可能比您要求的解决方案更受欢迎。
我一直试图在WPF
创建自定义的加号按钮既然没有“加号按钮”控件,无论你做,当然会被定制。但是,您不必完全重新发明*。 Windows中已经使用了+
图标。
除非您的应用程序具有完全自定义的用户界面,否则建议重新使用控件和图像来制作统一的用户体验。
要看看如何将这些现有的图标,看看这个答案:Default icons for Windows applications?
答案是指被与Visual Studio安装了Zip文件。从该zip文件中查看该图标:
VS2010ImageLibrary/_Common Elements/Actions/Add。PNG
还有其他的 “添加” 图标型下:
VS2010ImageLibrary /操作/ png_format/WinVista
VS2010ImageLibrary /对象/ png_format/WinVista
若要使用您的按钮图像:
- 提取图像
- 编辑以任何方式是必要的图像(VS或画图程序)
- 添加图像( S)到您的项目作为嵌入式资源
- 看看这个问题:WPF - How to create image button with template
这将工作,但我需要按钮有动画像我的其他按钮一样。使用story_board来获取我想要的动画类型将不适用于您所描述的 – Encryption
@Encryption:够公平:) –
@ MerlynMorgan-Graham是否有任何方法将它们从xaml中引用为静态类,如窗口暴露? –
对于任何人谁发现这个页面,以下路径:
<Path x:Name="ButtonPath"
Margin="1"
Stroke="Gray"
StrokeThickness="1"
StrokeStartLineCap="Square"
StrokeEndLineCap="Square"
Stretch="Uniform"
VerticalAlignment="Center"
HorizontalAlignment="Center"
>
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="0,100">
<LineSegment Point="0,-100"/>
</PathFigure>
<PathFigure StartPoint="100,0">
<LineSegment Point="-100,0"/>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
让我在这个快照我的程序 Plus Button SnapShot
所示的加号按钮。如果“+”只是过大,使用ScaleTransform 。 –