C# 是否可以使RenderTransform动画不修改鼠标的命中区域?
我的按钮模板上有一个动画,当C# 是否可以使RenderTransform动画不修改鼠标的命中区域?,c#,wpf,animation,storyboard,expression-blend,C#,Wpf,Animation,Storyboard,Expression Blend,我的按钮模板上有一个动画,当IsMouseOver为true时,该动画会旋转按钮。 动画会旋转按钮,因此如果用户没有将光标放在旋转的定位点附近,按钮可能会“跑开” 我的目标是,如果鼠标位于其原始区域内,按钮仍将保持悬停状态(因此,即使按钮旋转远离光标,它也将保持悬停状态,并接收鼠标单击,即使单击不是直接在其上) 我原以为使用RenderTransform而不是LayoutTransform可以解决我的问题,但不幸的是它仍然存在 我该怎么做? 谢谢大家! 这是我的故事板(我用blend创建的,所
IsMouseOver
为true时,该动画会旋转按钮。动画会旋转按钮,因此如果用户没有将光标放在旋转的定位点附近,按钮可能会“跑开” 我的目标是,如果鼠标位于其原始区域内,按钮仍将保持悬停状态(因此,即使按钮旋转远离光标,它也将保持悬停状态,并接收鼠标单击,即使单击不是直接在其上) 我原以为使用
RenderTransform
而不是LayoutTransform
可以解决我的问题,但不幸的是它仍然存在
我该怎么做?谢谢大家!
这是我的故事板(我用blend创建的,所以请原谅它有点凌乱):
在按钮的模板中,相互添加两个项目(使用
网格
):
- 下面的透明边框,占据整个矩形区域,不应用变换
- 上面的实际按钮内容,已应用转换
我无法提供经过测试的示例代码,因为您没有包含自包含的示例。中的问题解释得很好,但添加一些代码会使其更容易理解。@MayurDhingra我已经包含了我的故事板,如果有其他帮助,请告诉我。
<Storyboard x:Key="HoverAnimation">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="border">
<EasingDoubleKeyFrame KeyTime="0:0:1.6" Value="-10.8">
<EasingDoubleKeyFrame.EasingFunction>
<BounceEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
<PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="border">
<EasingPointKeyFrame KeyTime="0:0:1.6" Value="0.919,0.3">
<EasingPointKeyFrame.EasingFunction>
<BounceEase EasingMode="EaseOut"/>
</EasingPointKeyFrame.EasingFunction>
</EasingPointKeyFrame>
</PointAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" Storyboard.TargetName="border">
<EasingDoubleKeyFrame KeyTime="0:0:1.6" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>