WPF 样式在缩放后执行平移

标签 wpf styles translate

我已经在 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/

相关文章:

.net - WPF - 数据绑定(bind)到同一控件的属性

javascript - 在 WebGL 中翻译 3d 对象

xml - xsl : how to translate or replace string?

python - 将带有 yield(string) 的 python 函数翻译成 C++

c# - 在 ListBox 中显示自定义对象列表,为每个对象使用自定义用户控件

wpf - 如何更改 WPF `<Separator/>` 的高度?

wpf - WPF转换器是如何执行的?

javascript - 查找所有 <li> 的边框颜色

c# - 应用样式以编程方式进行控制

html - 强制内部 td 的行为不像 tr