Как сглаживать изображение во Flex? - PullRequest
1 голос
/ 07 июня 2009

У меня есть компонент Flex с фоновым изображением. Вначале изображение получается четким, но при каждом изменении масштаба компонента с использованием scaleX и scaleY изображение становится неровным. Как сделать сглаживание изображения таким образом, чтобы оно масштабировалось до 0,75, а линии были плавными, а не неровными?

Вот изображение

Вот уменьшенная версия

И немасштабированный (хороший) один

Ответы [ 2 ]

6 голосов
/ 07 июня 2009

Если вы загружаете изображение с компонентом Image, вы можете преобразовать свойство содержимого компонента в растровое изображение, а затем установить сглаживание на true. К сожалению, компонент изображения не предоставляет эту функциональность из коробки. Тем не менее, это довольно легко взломать.

Вот учебник, который покажет вам, как создать такой компонент: http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=4001

Однако, если это установлено с использованием стиля backgroundImage компонента, вам просто может не повезти, если вы не переопределите updateDisplayList и не выполните рисование растрового изображения самостоятельно с помощью Graphics.beginBitmapFill (который обеспечивает поддержку сглаживания).

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

0 голосов
/ 08 июня 2009

Если размеры вашего растрового изображения равны либо n ^ 2, либо n ^ 8, тогда Flash Player автоматически использует технику, называемую mip-mapping, которая значительно улучшит внешний вид (и производительность) масштабированных растровых изображений.

...