Мне нужна помощь в получении растрового изображения для правильного применения сглаживания после очень малого масштабирования.
То, что я сейчас делаю, загружает изображение .png с помощью объекта Loader.После загрузки файла я преобразовал содержимое loaderInfo в растровое изображение и установил для значения сглаживания значение true.Это работает без проблем, пока я не достигну значения ScaleX и ScaleY меньше 0,5.
Например, если у меня есть объект 1000x1000, его уменьшение до 200x200 приводит к тому, что сглаживание растрового изображения больше не работает.
Я могу воспроизвести проблему, используя все следующие методы определения размера:
- Измените свойства scaleX и scaleY на растровом изображении.
- Непосредственное изменение свойств высоты и ширины растрового изображения.
- Добавьте растровое изображение как дочерний элемент другого спрайта и измените свойства scaleX и scaleY спрайта.
- Добавьте растровое изображение как дочерний элемент другого спрайта и измените свойства высоты и ширины спрайта.
- Создание нового объекта BitmapData с масштабом матрицы и затем рисование на нем оригинальных BitmapData.
Я также пробовал некоторые другие обходные пути, которые я нашел при поиске, например:
- установка scaleX изображения на 1,001 или 0,999
- , при этом высота и ширина объекта Bitmap должны быть четными числами.
НижеПример кода для воспроизведения проблемы.(Я запускаю это локально, поэтому у меня есть копия testimage.png в моей папке bin-debug)
public class MainObj
{
public var comp:UIComponent;
public function MainObj()
{
}
public function LoadContent():void
{
var str:String = "testimage.png";
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadContentComplete);
l.load(new URLRequest(str));
}
public function LoadContentComplete(e:Event):void
{
var li:LoaderInfo = e.target as LoaderInfo;
var bmp:Bitmap = li.content as Bitmap;
bmp.smoothing = true;
bmp.scaleX = 0.2;
bmp.scaleY = 0.2;
comp.addChild(bmp);
}
}
У меня также есть файл mxml, который создает экземпляр класса MainObj и устанавливает свойство compк экземпляру UIComponant, который был добавлен в код mxml приложения (UIComponent - это то, что позволяет добавлять растровое изображение к элементам Spark, составляющим mxml).
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600"
width="800" height="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private var mainObj:MainObj;
override protected function initializationComplete():void
{
mainObj = new MainObj();
mainObj.comp = comp;
mainObj.LoadContent();
super.initializationComplete();
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%">
<mx:UIComponent id="comp" width="100%" height="100%"/>
</s:VGroup>
</s:Application>