Плоская проекция и масштаб, вызывающие размытие в silverlight

StackOverflow https://stackoverflow.com/questions/2453781

Вопрос

ОК,

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

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

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

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, изображение становится нерезким, поэтому размытое изображение получается только во время поворота.

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top