我需要帮助获取位图,以便在缩放后非常小的情况下正确应用平滑。
我现在正在做的是使用Loader对象加载.png图像。加载文件后,我将loaderInfo的内容转换为位图,并将平滑值设置为true。在我达到小于0.5的ScaleX和ScaleY值之前,这没有问题。
例如,如果我有一个1000x1000对象,将其缩小到200x200会导致位图平滑不再有效。
我可以使用以下所有大小调整方法重现问题:
我还尝试了一些我在搜索时找到的解决方法,例如:
下面是一些用于重现问题的示例代码。 (我在本地运行这个,所以我在bin-debug文件夹中有一个testimage.png的副本)
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属性设置为已在Application mxml代码中添加的UIComponant实例(UIComponent允许将Bitmap添加到构成mxml的Spark元素。)
<?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>
答案 0 :(得分:2)
答案 1 :(得分:0)
我发现将stage.quality
属性设置为StageQuality.BEST
可以增强缩放位图的平滑效果。