旋转后XAML图像适合父级

Cat*_*top 6 wpf xaml rotation

我有一个允许用户旋转图像的控件 - 这是XAML的简化版本:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Border Grid.Row="0" Margin="5"
            BorderBrush="Black" BorderThickness="2"
            Background="#ddd">
        <Viewbox>
            <Image Source="image.jpg" RenderTransformOrigin="0.5, 0.5">
                <Image.RenderTransform>
                    <RotateTransform Angle="{Binding ElementName=Slider, Path=Value}"/>
                </Image.RenderTransform>
            </Image>
        </Viewbox>
    </Border>

    <Slider x:Name="Slider" 
            Grid.Row="1" Margin="5"
            Minimum="-180" Maximum="180"
            Value="0"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是图像在旋转时可以跨越包含矩形的边界,而我需要调整它以使其适合.我可以计算ViewModel的最佳拟合并将其绑定,但我很确定我可能只是错过了XAML中的一个技巧来让我发生这种情况.我认为Viewbox可能已经完成了这个伎俩,但事实并非如此,或者我错误地使用它...

Cat*_*top 11

固定!我知道这很简单:)

我将RenderTransform切换到LayoutTransform并像魅力一样工作!

  • 此链接解释了RenderTransform和LayoutTransform之间的区别及其工作原理:http://www.scottlogic.com/blog/2008/12/19/layouttransform-vs-rendertransform-whats-the-difference.html (3认同)