2

如this question所述,我有一种Button我一直在 WPF 中开发的风格。我想对这种风格做的另一件事是稍微缩小一点,让它看起来像被点击一样被点击。现在,转换代码如下所示:Button

<Trigger Property="IsPressed" Value="True">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <TransformGroup>
                <ScaleTransform ScaleX="0.98" ScaleY="0.98"/>
                <SkewTransform AngleX="0" AngleY="0"/>
                <RotateTransform Angle="0"/>
                <TranslateTransform X="0" Y="0"/>
            </TransformGroup>
        </Setter.Value>
    </Setter>
    <Setter Property="Button.BitmapEffect">
        <Setter.Value>
            <OuterGlowBitmapEffect GlowColor="Green" GlowSize="10"></OuterGlowBitmapEffect>
        </Setter.Value>                                
    </Setter>
</Trigger>

所以,这很令人兴奋。问题是,与按钮所在区域左上角 相关的ScaleTransform比例尺(即,它正在重新缩放到按钮的 0,0 坐标,或者至少,这是我假设的)。ImageButton

我的理解TranslateTransform是它是像素坐标,而不是相对于对象大小的坐标。如果我输入TranslateTransform0.01、0.01 的 a,那么它将Button在 x 和 y 上移动 0.01 像素,而不是在每个方向上移动 0.01*sizeof(imagedimension) 像素。我怎样才能得到这种相对变换,我怎样才能让它作为一种风格发生,即,所以我不必为Button我所拥有的每种不同尺寸做不同的数学运算?

4

2 回答 2

2

要通过中心缩放,您可以在触发器中添加:

<Setter Property="RenderTransformOrigin" Value=".5,.5"/>
于 2009-04-16T19:01:58.507 回答
1

您需要将 Button 上的 RenderTransformOrigin 设置为 0.5 x 0.5:

RenderTransformOrigin="0.5,0.5"
于 2009-04-16T19:00:43.987 回答