我已经在 WPF 中开发了一个 Button
样式,如 this question 中所述。 。我想用这种样式做的另一件事是让 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
将与 Button
关联的 Image
缩放到按钮所在区域的左上角(即,它重新缩放为按钮的 0,0 坐标,或者至少我是这么假设的)。
我对 TranslateTransform 的理解是它采用像素坐标,而不是相对于对象大小的坐标。如果我输入 0.01、0.01 的 TranslateTransform
,那么它将在 x 和 y 方向上将 Button
移动 0.01 像素,而不是在每个方向。我怎样才能获得相对变换,以及如何让它作为一种样式发生,即,这样我就不必为我拥有的每个不同的 Button
尺寸进行不同的数学运算?
最佳答案
要通过中心进行缩放,您可以添加触发器:
<Setter Property="RenderTransformOrigin" Value=".5,.5"/>
关于WPF 样式在缩放后执行平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757549/