缩放后执行转换的WPF样式
如中所述,我在WPF中开发了一个缩放后执行转换的WPF样式,wpf,styles,translate,Wpf,Styles,Translate,如中所述,我在WPF中开发了一个按钮样式。我想用这种风格做的另一件事是将按钮缩小一点,使它看起来像被点击一样。现在,转换代码如下所示: <Trigger Property="IsPressed" Value="True"> <Setter Property="RenderTransform"> <Setter.Value> <TransformGroup> <Sc
按钮样式。我想用这种风格做的另一件事是将按钮
缩小一点,使它看起来像被点击一样。现在,转换代码如下所示:
<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里,但我想你可能不想把它放在那里。如果希望变换原点影响所有变换,而不仅仅是触发的变换,则需要在按钮本身上设置原点。