как преобразуется свойство «Растягивать» изображения в эффектах WPF?

#wpf

#wpf

Вопрос:

как преобразуется свойство «Растягивать» изображения в эффектах WPF?

Я обнаружил, что свойство «Растягивать» изображения влияет на применяемые к нему преобразования. Когда stretch = fill, то все в порядке, но если stretch =uniform, преобразования выполняются поэтапно. Я не понимаю, почему это происходит. Пожалуйста, объясните.

Изображение 1

Изображение 2

код:

 <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. Не могли бы вы добавить свой фактический код к вопросу вместо скриншотов к нему? Это интересно, и я бы хотел с этим поиграть, но мне лень все это набирать 🙂

2. @Tim Checkout, я вставил код

Ответ №1:

Из моего тестирования выясняется, что это просто ошибка в способе предварительного просмотра этого XAML в Visual Studio designer.

Я взял ваш код и загрузил его как в Visual Studio 2010, так и в Expression Blend 4. В конструкторе Visual Studio я понимаю, о чем вы говорите. В Expression Blend предварительный просмотр выполнен правильно.

Самое главное, когда я запускаю приложение, оно отображается правильно. Итак, я думаю, вы в порядке. Просто притворись, что это не так, или используй Expression Blend, когда тебе нужно работать с этим элементом управления.