Wpf 如何在ScrollViewer中旋转图像?

Wpf 如何在ScrollViewer中旋转图像?,wpf,image,image-rotation,Wpf,Image,Image Rotation,我尝试在ScrollViewer(WPF)中旋转图像,但整个图像需要保持可见。例如,如果旋转角度为45,则图像的角将被切断。我尝试通过计算旋转图像的周围矩形来设置图像的宽度和高度。它可以工作,但如果旋转角度超过45,则无法工作 <Grid> <ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible" Margin="0,0,0,0"> <Image x:Name="im

我尝试在ScrollViewer(WPF)中旋转图像,但整个图像需要保持可见。例如,如果旋转角度为45,则图像的角将被切断。我尝试通过计算旋转图像的周围矩形来设置图像的宽度和高度。它可以工作,但如果旋转角度超过45,则无法工作

<Grid>
    <ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible" Margin="0,0,0,0">
        <Image x:Name="image" RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0" MouseDown="image_MouseDown" MouseRightButtonDown="image_MouseRightButtonDown" MouseLeftButtonDown="image_MouseLeftButtonDown">
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform x:Name="scal"/>
                    <SkewTransform/>
                    <RotateTransform Angle="90" x:Name="rot"/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </ScrollViewer>

</Grid> 

在以下结构中使用
视图框

<ScrollViewer Width="100" Height="100" Background="Black" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
    <Viewbox Width="100" Height="100">
        <Border Width="100" Height="100" Background="Red" >
            <Border.LayoutTransform>
                <RotateTransform Angle="30"   />
            </Border.LayoutTransform>
        </Border>
    </Viewbox>
</ScrollViewer>

请添加XAML代码和您编写的C#代码。您需要维护
纵横比
,那么现在就会出现这样的问题。我使用Image.layoututtransform而不是Image.RenderTransform,它成功了。
<ScrollViewer Background="Black" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
    <Viewbox>
        <Border Width="1" Height="1" Background="Red" >
            <Border.LayoutTransform>
                <RotateTransform Angle="30"   />
            </Border.LayoutTransform>
        </Border>
    </Viewbox>
</ScrollViewer>