2011-09-03 118 views
3

我想这个旋转画布旋转使用布局画布变换

  <Canvas Canvas.Left="203" Canvas.Top="274" Name="canvas1" Height="0" Width="0" > 
       <Rectangle.LayoutTransform> 
        <RotateTransform Angle="-45"/> 
       </Rectangle.LayoutTransform> 

我想旋转这个画布,但在相同的位置。检查这一形象enter image description here

左图我不想要这样做..我需要创建第二个..但总是我需要设置X,Y值?还是有另一种方式?

回答

5

在WPF中,有两个属性支持显示转换,LayoutTransformRenderTransform。执行布局时,将应用任何分配给LayoutTransform的转换。执行渲染时,RenderTransform会在布局后应用。

您需要更改转化到的RenderTransform

 <Rectangle.RenderTransform> 
      <RotateTransform Angle="-45"/> 
     </Rectangle.RenderTransform> 

你可以看到LayoutTransform and RenderTransform.

+1

这并不是故事的全部之间的差异。为什么'RenderTransform'(正确)选取对象的中心,就像它在这里做的那样,作为旋转的中心?我认为这可能取决于你从哪里开始抽签操作。换句话说,RenderTransform如何“知道”中心在哪里?我怀疑答案是它没有。你可以使用'RenderTransformOrigin'来告诉转换引擎的旋转中心相对于对象边界的位置。 –

+0

@Tom:感谢您提供宝贵的信息。即使您不知道它的大小,我们也可以使用RenderTransformOrigin到元素的中心。 – Shebin