Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WPF中,如何围绕图像的中心而不是围绕其所在的画布旋转图像,C#_C#_Wpf_Image_Xaml_Wpf Controls - Fatal编程技术网

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

在WPF中,如何围绕图像的中心而不是围绕其所在的画布旋转图像,C#,c#,wpf,image,xaml,wpf-controls,C#,Wpf,Image,Xaml,Wpf Controls,我还在学习如何用WPF制作应用程序,我有点挣扎 我试着围绕它的中心旋转单个矩形,但它们正在围绕它所在的画布旋转。我读到了RenderTransferMorigin,我将它设置为0.5,0.5,但它仍然相对于画布旋转 <ItemsControl Name="canvasDataBinding" HorizontalAlignment="Left" Height="256" Marg

我还在学习如何用WPF制作应用程序,我有点挣扎

我试着围绕它的中心旋转单个矩形,但它们正在围绕它所在的画布旋转。我读到了RenderTransferMorigin,我将它设置为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>

以下是它目前正在做的事情:

编辑: 这是我使用ImageBrush.RelativeTransform应用旋转时的结果


我尝试在矩形上设置ClipToBounds=“False”,但我得到了相同的结果。

只需在图像上而不是在矩形上设置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>


谢谢。这是我想要的旋转方式,但现在图像被矩形剪裁。我用一张图片编辑了我的帖子。你没有看到矩形吗?没有。我只需要图片。我的印象是我需要把图像放在某个东西里面。我可以用多个图像填充画布吗?我只是开始使用wpf,所以我还不太清楚。@Infodayne是的,这里不需要矩形,只需使用图像并在图像内部使用rendertransform即可摆脱矩形。现在我只有一个图像,我正在使用RenderTransform。但是,我不能使用RelativeTransform,因为它不是ImageBrush,所以它会再次围绕画布旋转。