【发布时间】:2026-01-08 09:15:02
【问题描述】:
我的按钮有一个六边形图像,如图所示。我想从角落边缘删除点击,并且只有在点击图片时才会被点击。我尝试了一些解决方案,因为我的可点击网格总是方形的,这就是为什么我的按钮点击区域比我的图片大。
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="LayoutGrid"
SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter"
Focusable="True"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="0"
IsHitTestVisible="True"
ToolTip="Button">
<ContentPresenter.Content>
<Image Source="/WpfApp3;component/Images/hexagonImage.png"
Stretch="None" />
</ContentPresenter.Content>
</ContentPresenter>
<Label Content="Label"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="60,130,60,51"
Width="180"
Height="40"
HorizontalContentAlignment="Center"
RenderTransformOrigin="0.428,-0.075"
FontSize="18"
FontFamily="Arial Narrow"
IsHitTestVisible="False" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsDefaulted"
Value="true" />
<Trigger Property="IsMouseOver"
Value="true" />
<Trigger Property="IsPressed"
Value="true" />
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="TextElement.Foreground"
TargetName="contentPresenter"
Value="{StaticResource Button.Disabled.Foreground}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
【问题讨论】:
-
查看这个 (*.com/questions/17532063/…) 链接。这是关于使用 ControlTemplate 根据您的喜好塑造一个按钮,在您的情况下是一个六边形。
-
@ivica,尝试使用十六进制几何图形在 LayoutGrid 上设置
Clip属性 (Clip) -
我找到了问题所在。即使背景边缘是透明的,它们仍然存在,这会产生问题。我已经制作了自定义控制(按钮),并且在里面我绘制了一条与我的图片完全相同的路径并且与图片居中相同,然后将我的路径设置为可点击和透明并且我的图片不可点击,这就解决了问题。