缩放后执行转换的WPF样式

缩放后执行转换的WPF样式,wpf,styles,translate,Wpf,Styles,Translate,如中所述,我在WPF中开发了一个按钮样式。我想用这种风格做的另一件事是将按钮缩小一点,使它看起来像被点击一样。现在,转换代码如下所示: <Trigger Property="IsPressed" Value="True"> <Setter Property="RenderTransform"> <Setter.Value> <TransformGroup> <Sc

如中所述,我在WPF中开发了一个
按钮
样式。我想用这种风格做的另一件事是将
按钮
缩小一点,使它看起来像被点击一样。现在,转换代码如下所示:

<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坐标,或者至少,这是我假设的)


我对TranslateTransform的理解是,它是在像素坐标中,而不是在相对于对象大小的坐标中。如果我将
TranslateTransform
设置为0.01,0.01,那么它将在x和y方向上移动
按钮
0.01像素,而不是在每个方向上移动0.01*sizeof(imagedimension)像素。如何获得相对变换,以及如何将其作为一种样式进行,即,不必对每个不同的
按钮大小进行不同的计算?

您需要将按钮上的RenderTransferMorigin设置为0.5乘0.5:

RenderTransformOrigin="0.5,0.5"

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

<Setter Property="RenderTransformOrigin" Value=".5,.5"/>


如果需要,也可以在ScaleTransform上设置CenterX和CenterY值,但这并不适用于所有尺寸的按钮。谢谢!我必须向gcores提供答案,因为他给了我发射果仁鱼雷的完整代码,并让它朝那个方向前进。那很好。。。我想把原点放在setter里,但我想你可能不想把它放在那里。如果希望变换原点影响所有变换,而不仅仅是触发的变换,则需要在按钮本身上设置原点。