使鼠标悬停时圆角按钮变大
本文关键字:按钮 圆角 鼠标 悬停 | 更新日期: 2023-09-27 18:10:58
我用下面的代码创建了一个圆角按钮。
<Button Width="100"
Height="100">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Stroke="Black"
StrokeThickness="2">
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Offset="0"
Color="Lime" />
<GradientStop Offset="1"
Color="Lime" />
<GradientStop Offset="1"
Color="Gold" />
<RadialGradientBrush.Transform>
<TransformGroup>
<ScaleTransform ScaleY="0.65" />
</TransformGroup>
</RadialGradientBrush.Transform>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
我需要使这个按钮在鼠标悬停时稍微大一点。我搜索了这个社区和谷歌也。
您需要在渲染时应用ScaleTransform
,当鼠标在按钮上时
样式触发器就是这样做的:
<Button Width="100" Height="25" Content="Press me!">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransformOrigin" Value="0.5, 0.5"/>
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="1.2" ScaleY="1.2"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
注意,您必须将RenderTransformOrigin
更改为从中心而不是左上角缩放
在WPF中,没有"鼠标悬停"事件,但如果"鼠标悬停"也可以,我应该能够帮助我的答案。我只是不能在代码中测试,但这里应该是你的问题的解决方案:
<Button Width="100" Height="100">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Stroke="Black"
StrokeThickness="2">
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Offset="0"
Color="Lime" />
<GradientStop Offset="1"
Color="Lime" />
<GradientStop Offset="1"
Color="Gold" />
<RadialGradientBrush.Transform>
<TransformGroup>
<ScaleTransform ScaleY="0.65" />
</TransformGroup>
</RadialGradientBrush.Transform>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Button.Template>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Height" Value="150"/>
<Setter Property="Width" Value="150"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
我只是通过Button.Style
访问Trigger
,然后改变那里的属性。
此外,在更改xaml控件的方面时,您可以做两件事:
1: 改变它的状态:每个控件都有一组状态(悬停,释放,按下,…)附加到属性(背景颜色,渲染大小,…)绑定到它的类。根据您要修改的控件的不同,您可以通过修改子项的参数(比如按钮中Ellipse的大小)来更改许多内容。
2: 制作自定义动画:换句话说,它被称为故事板,在那里你定义动画键。由触发器启动的这些动画非常有用,因为它们不仅仅是两种状态之间的简单插值,而是真正的运动设计。
对于这两种技术,您可能必须为按钮修改或创建自己的控件模板。