如何围绕它的中心旋转图像而不是它在WPF中的画布,C#

时间:2014-08-17 03:47:08

标签: c# wpf image xaml wpf-controls

我还在学习如何在WPF中制作应用程序,而且我还在苦苦挣扎。

我试图围绕其中心旋转各个矩形,但它们围绕放置它的画布旋转。我读到了RenderTransformOrigin,我把它设置为0.5,0.5,但它仍然相对于画布旋转。

<ItemsControl Name="canvasDataBinding"
        HorizontalAlignment="Left" 
        Height="256" 
        Margin="294,35,0,0" 
        VerticalAlignment="Top" 
        Width="256"
        ClipToBounds="False">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas 
                HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch" 
                Background="#FFBBBBBB">
            </Canvas>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>

                <Rectangle HorizontalAlignment="Left" 
                           Height="{Binding Height}" 
                           Width="{Binding Width}"
                           Stroke="Black" 
                           VerticalAlignment="Top"
                           RenderTransformOrigin="0.5,0.5">
                    <Rectangle.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform X="{Binding OffsetX}" Y="{Binding OffsetY}"/>
                            <RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding Angle}"/>
                        </TransformGroup>
                    </Rectangle.RenderTransform>
                    <Rectangle.Fill>
                        <ImageBrush ImageSource="{Binding Name}">
                        </ImageBrush>
                    </Rectangle.Fill>
                </Rectangle>

            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

以下是目前正在做的事情: enter image description here

修改 这是当我使用ImageBrush.RelativeTransform应用旋转时 enter image description here

我尝试设置ClipToBounds =&#34; False&#34;在矩形上,但我得到相同的结果。

1 个答案:

答案 0 :(得分:1)

只需将RelativeTransform设置为图像而不是矩形,

  <Image ImageSource="{Binding Name}">
  <ImageBrush.RelativeTransform>
       <TransformGroup>
         <TranslateTransform X="{Binding OffsetX}" Y="{Binding OffsetY}"/>
              <RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding Angle}"/>
        </TransformGroup>
   </ImageBrush.RelativeTransform>
   </ImageBrush>