我需要在WPF中创建一个具有自定义形状的按钮,特别地,我希望它具有像椭圆形一样的圆角。 这是一张图片:
只有黑色区域应该是点击目标;白色区域应该是透明的。
如何在WPF中创建一个具有这种自定义形状的按钮控件? 我知道如何创建常规矩形按钮,但不知道如何创建这样的圆角按钮。
我需要在WPF中创建一个具有自定义形状的按钮,特别地,我希望它具有像椭圆形一样的圆角。 这是一张图片:
只有黑色区域应该是点击目标;白色区域应该是透明的。
如何在WPF中创建一个具有这种自定义形状的按钮控件? 我知道如何创建常规矩形按钮,但不知道如何创建这样的圆角按钮。
你可以使用控件模板来实现这个目标:
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Path Fill="{TemplateBinding Background}"
Data="M 0,0 A 100,100 90 0 0 100,100 L 100,100 100,0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后将其应用于按钮:
<Button Style="{StaticResource ButtonStyle}"/>
如果你需要一些参考来绘制“路径”,请查看此MSDN链接。
更新
要显示内容,您应该使用ContentPresenter,类似于下面这样:
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Path Fill="{TemplateBinding Background}"
Data="M 0,0 A 100,100 90 0 0 100,100 L 100,100 100,0" />
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在按钮中:
<Button Style="{StaticResource ButtonStyle}" Foreground="White">
test
</Button>