我们可以使用RotateTransform的CenterX和CenterY属性来定义元素的旋转中心,如下:

<Button.RenderTransform>
      
<RotateTransform CenterX="20" CenterY="20"></RotateTransform>
</Button.RenderTransform>

但是我们仍然可已使用元素的RenderTransformOrigin属性来表示变换中心。如下:

 

<Button x:Name="btnGenerate" Width="100" Height="35" Content="Generate XML" Click="btnGenerate_Click" RenderTransformOrigin="0.5,0.5">

 

那么,我们就会问了,既然元素已经有了一个RenderTransformOrigin属性了,为什么象RotateTransform这样的变换还有CenterX和CenterY呢?

首先,CenterX和CenterY属性确实与RenderTransformOrigin属性重复了,但是CenterX和CenterY使用像素来指定的,而不像RenderTransformOrigin使用的是规范化的值。因此,一个width为20的元素的右上角是有CenterX=0和CenterY=20来指定的。而不是(0,1).并且,当多个RenderTransform应用到同一个元素上时,RenderTransformOrigin会应用到所有这些RenderTransform上,然而独立变换的CenterX和CenterY属性更适合做精细的控制。

也就是说,RenderTransformOrigin通常比CenterX和CenterY更加有用。对于围绕元素中心转换一个元素的常用情况,相对的RenderTransformOrigin值(0.5,0.5)很容易在xaml中指定,然而用CenterX和CenterY实现同样的功能则需要对元素(如TextBlock)使用javascript,动态改变大小。

注意,能在使用某个元素的RenderTransformOrigin的同时使用它的变换的CenterX和CenterY。在这种情况下,两个X值个两个Y值要加在一起来计算出最终的原点。

相关文章:

  • 2022-01-12
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2022-02-18
  • 2021-11-25
  • 2021-06-07
猜你喜欢
  • 2022-12-23
  • 2021-10-07
  • 2021-10-11
  • 2021-04-20
  • 2022-12-23
  • 2021-08-29
相关资源
相似解决方案