WPF效果转换中Image的“Stretch”属性如何?

时间:2011-05-20 16:40:35

标签: wpf

WPF效果中的Image的“Stretch”属性如何变换?

我发现图像的Stretch属性会产生应用于它的变换。 当stretch = fill时,一切都很好,但如果stretch = uniform,则变换是chaged。 我不明白为什么会发生这种情况。 Plz解释。

Image 1

Image 2

CODE:

<Canvas Height="200" Width="200">
        <Image Height="50" Width="50" RenderTransformOrigin="0.5,0.5" Source="Image.jpg" Stretch="Fill">
            <Image.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="200" />
                    <TranslateTransform X="100" Y="100"/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
        <Rectangle Height="50" Width="50" RenderTransformOrigin="0.5,0.5" Fill="RoyalBlue" Opacity="0.5">
            <Rectangle.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="200" />
                    <TranslateTransform X="100" Y="100"/>
                </TransformGroup>
            </Image.RenderTransform>
        </Rectangle>        
    </Canvas>

<Canvas Height="200" Width="200">
        <Image Height="50" Width="50" RenderTransformOrigin="0.5,0.5" Source="Image.jpg" Stretch="Uniform">
            <Image.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="200" />
                    <TranslateTransform X="100" Y="100"/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
        <Rectangle Height="50" Width="50" RenderTransformOrigin="0.5,0.5" Fill="RoyalBlue" Opacity="0.5">
            <Rectangle.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="200" />
                    <TranslateTransform X="100" Y="100"/>
                </TransformGroup>
            </Rectangle.RenderTransform>
        </Rectangle>        
    </Canvas>

1 个答案:

答案 0 :(得分:1)

从我的测试来看,这似乎只是Visual Studio设计者预览此XAML的方式中的一个错误。

我已经将您的代码加载到Visual Studio 2010和Expression Blend 4中。在Visual Studio的设计器中,我看到了您正在谈论的内容。在Expression Blend中,预览是正确的。

最重要的是,当我运行应用程序时,它会正确呈现。所以我觉得你没事。只是假装它没有这样做或者在你必须使用这个控件时使用Expression Blend。