图像控制使用与其他控件不同的转换?

时间:2017-08-17 15:52:22

标签: wpf xaml transform

抓我的头。为什么世界上这些控件出现在不同的位置?这是我的XAML:

  • 第一个(黑色)矩形是参考矩形。
  • 第二个(红色)矩形正确显示在参考矩形顶部的正中心。
  • 具有相同尺寸和变换的图像控制(灰色)显得略微漂移。

    <Canvas Width="800" Height="500">
      <Rectangle Width="100" Height="100" Canvas.Left="300" Canvas.Top="200" Stroke="Black" />
    
      <Rectangle Width="100" Height="100" Canvas.Left="300" Canvas.Top="200" Stroke="Red">
        <Rectangle.RenderTransform>
          <RotateTransform Angle="30" CenterX="50" CenterY="50" />
        </Rectangle.RenderTransform>
      </Rectangle>
    
      <Image Width="100" Height="100" Canvas.Left="300" Canvas.Top="200">
        <Image.RenderTransform>
          <RotateTransform Angle="30" CenterX="50" CenterY="50" />
        </Image.RenderTransform>
      </Image>
    </Canvas>
    

在WPF设计器中出现如下:

https://android-developers.googleblog.com/2017/06/reduce-friction-with-new-location-apis.html

1 个答案:

答案 0 :(得分:-1)

就我而言,被分类的形状(如Rectangle)和Image可能对renderorigin有不同的行为,如果你将Image rotatetransform centerX / Y的两个值都编辑为0,它们的行为可能相同

<Canvas Width="800" Height="500">
<Rectangle Width="100" Height="100" Canvas.Left="300" Canvas.Top="200     Stroke="Black" />
<Rectangle Width="100" Height="100" Canvas.Left="300" Canvas.Top="200"    Stroke="Red">
   <Rectangle.RenderTransform>
     <RotateTransform Angle="30" CenterX="50" CenterY="50" />
   </Rectangle.RenderTransform>

 <Image Width="100" Height="100" Canvas.Left="300" Canvas.Top="200">
   <Image.RenderTransform>
     <RotateTransform Angle="30" CenterX="0" CenterY="0" />
   </Image.RenderTransform>
 </Image>