У меня есть программа, которая отображает изображение, и пользователь может изменить размер изображения в окне (например, вращая колесо мыши). Я масштабирую изображение с помощью RenderTransform, например так:
<Image x:Name="CurrentImage">
<Image.RenderTransform>
<TransformGroup>
<TranslateTransform x:Name="Translate" X="0" Y="0"/>
<ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1"/>
</TransformGroup>
</Image.RenderTransform>
</Image>
Тогда я просто изменяю свойства ScaleX
и ScaleY
. Размер изображения изменяется, как и ожидалось.
Однако в определенных масштабах изображение сильно искажается. Ниже около 20% и выше около 80% он отображается нормально, но для промежуточных разрешений некоторые или все изображения искажаются. Смотрите скриншоты ниже.
Пара других деталей:
- 2 компьютера с Windows XP, на которых я пробовал это, имели такое же повреждение, но ноутбук с Windows 7 НЕ выявлял проблему.
- Я также пытался заменить
RenderTransform
простым масштабированием изображения, используя свойства Height
и Width
, но это не имело значения.
- Не все изображения имеют проблемы, и те, которые делают, иногда делают это с различными масштабными коэффициентами. Большие изображения кажутся хуже, но я не измерял систематически.
- .NET 3.5 и .NET 4 RC оба демонстрируют поведение.
Кто-нибудь видел такое поведение раньше, и есть ли у вас мысли?
При 20% первоначального размера:
альтернативный текст http://maylark.com/Scale20.png
При 26% от исходного размера:
альтернативный текст http://maylark.com/Scale26.png
На 41% от исходного размера:
альтернативный текст http://maylark.com/Scale41.png
При 64% оригинального размера:
альтернативный текст http://maylark.com/Scale64.png
На 80% от исходного размера:
альтернативный текст http://maylark.com/Scale80.png