Плоская проекция и масштаб, вызывающие размывание в серебряном свете - PullRequest
1 голос
/ 16 марта 2010

Хорошо,

Итак, я попытался создать приложение, которое полагается на масштабирование изображений по индивидуальному коэффициенту.Эти изображения затем можно переворачивать, но с помощью анимации, работающей на повороте ProjectionPlane.

Проблема возникает, когда изображение масштабируется и поворачивается.По какой-то причине он начинает размываться, когда немасштабированное изображение не размывается.

Кроме того, если вы посмотрите на приведенный ниже пример изображения (верхняя часть масштабирована и повернута, нижняя повернута), проекция верхнегодаже не кажется правильным.Она слишком горизонтальная.

http://img43.imageshack.us/img43/5923/testimages.png http://img43.imageshack.us/img43/5923/testimages.png

Вот этот код для тестового приложения:

<UserControl x:Class="SilverlightApplication1.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Canvas x:Name="LayoutRoot" Background="White">

            <Border Canvas.Top="25" Canvas.Left="50">

                <Border.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="3" ScaleY="3" />
                    </TransformGroup>
                </Border.RenderTransform>

                <Border.Projection>
                    <PlaneProjection RotationY="45"/>
                </Border.Projection>

                <Image Source="bw-test-pattern.jpg" Width="50" Height="40"/>
            </Border>

            <Border Canvas.Top="150" Canvas.Left="50">
                <Border.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="1" ScaleY="1" />
                    </TransformGroup>
                </Border.RenderTransform>

                <Border.Projection>
                    <PlaneProjection RotationY="45"/>
                </Border.Projection>

                <Image Source="bw-test-pattern.jpg" Width="150" Height="120"/>
            </Border>

    </Canvas>
</UserControl>

Так что, если кто-нибудь сможет пролить свет на вопросэто может происходить, я очень ценю это.Предложения также приветствуются!:)

** Обновление **

Просто чтобы уточнить, если поворот плоскости проекции равен 0, изображение становится не размытым, поэтому изображение размыто только во время вращения.

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Ширина верхнего изображения установлена ​​на 50, а высота на 40. Таким образом, он уменьшен. Затем вы масштабируете его до нужного размера 150, 120. Я полагаю, Silverlight уменьшает изображение и не сохраняет первоначальный размер из-за оптимизации производительности. Оставьте масштаб и установите правильную ширину и высоту для первого изображения.

0 голосов
/ 16 марта 2010

Похоже, что верхнее изображение фильтруется при рисовании. Из вашего кода у вас есть:

<Image Source="bw-test-pattern.jpg" Width="50" Height="40"/>

для верхнего изображения и

<Image Source="bw-test-pattern.jpg" Width="150" Height="120"/>

для нижнего. У вас разные размеры изображения, поэтому верхнее изображение может быть масштабировано и, следовательно, размыто при интерполяции недостающих пикселей.

Я не знаком с Silverlight, поэтому я не знаю, как вы будете управлять параметрами фильтрации, но установка верхней строки выше той же, что и нижняя, может это исправить.

...