是否可以使RenderTransform动画不修改鼠标的命中区域?

时间:2014-02-01 13:13:14

标签: c# wpf animation storyboard expression-blend

我的按钮模板上有一个动画,当IsMouseOver为真时旋转按钮 动画旋转按钮,因此如果用户没有将光标放在旋转的锚点附近,按钮就会“逃跑”。

我的目标是,如果鼠标位于原始区域内,按钮仍会保持悬停(因此,即使按钮旋转离开光标,它也会保持悬停状态,即使点击也会受到鼠标点击不是直接在它上面。)

我认为使用RenderTransform代替LayoutTransform可以解决我的问题,但不幸的是它仍然会发生。

我该怎么做? 谢谢!

<小时/> 这是我的故事板(我用混合创建的,所以请原谅它是否混乱):

<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>

1 个答案:

答案 0 :(得分:0)

在按钮的模板中,相互添加两个项目(使用Grid):

  • 下方的透明边框,占据整个矩形区域,未应用转换。

  • 上面的实际按钮内容,应用了哪些转换。

我无法提供经过测试的示例代码,因为您没有包含自包含的示例。