2010-03-19 116 views
0

余米开发Flex应用程序,其中我想从用户本地硬盘驱动器绘制图像大小为640x360的画布。缩放图片放大问题

用户可以选择更大的分辨率&被缩放到画布尺寸图像。

但如果像3000x2000汽车更大分辨率的用户选择图像缩放拿很多时间&冻结的应用程序,直到规模完成。

是否有任何更快或种类线程可以做缩放图像的方法?

我使用矩阵缩放图片如下:

var mat:Matrix = new Matrix(); 
    var scalex:Number = canvasScreen.width/content.width; 
    var scaley:Number = canvasScreen.height/content.height; 
    mat.scale(scalex,scaley);   

    canvasScreen.graphics.clear();  
    canvasScreen.graphics.beginBitmapFill(content.bitmapData,mat); 

回答

0

你为什么不设置“scaleContent”属性的图片标签...图像将被调整到适合你的图片标签。

+0

我不希望像帆布的孩子,因为有其他类型的对象添加和删​​除,因此使用绘图方法将图像显示为backgrou ND。 – krishna 2010-03-19 08:11:05

0

我觉得你的问题是使用的形象,我开发一个画布上加载图像和扩展他们,但有工作正常的大分辨率,我会写一些代码的应用程序,也许它会帮助你:

public class ImageObject extend Canvas 
{ 
    public var image :Image; 

    .................. 
    .................. 

    override protected function childrenCreated() : void 
    { 
     super.childrenCreated(); 
     addChild(image); 
    } 

    public function scaleImage():void 
    { 
     // Caluculate your xVal and yVal here 

     var m:Matrix = new Matrix(); 
     m.scale(xVal, yVal); 
     m.concat(image.transform.matrix); 

     image.transform.matrix = m; 
    } 
} 

如果你不能将图像添加为孩子ImageObject你应该尝试 使2个容器例如:

public class ImageObject extend Canvas 
{ 

public var imageContainer :Canvas; 
public var otherContainer :Canvas; 

........................... 
........................... 

override protected function childrenCreated() : void 
{ 
     super.childrenCreated(); 
     addChild(imageContainer); // add here your image 
     addChild(otherContainer); // here other objects 
}