Apache flex 在画布中拟合Flex图像

Apache flex 在画布中拟合Flex图像,apache-flex,actionscript-3,Apache Flex,Actionscript 3,如何在Flex中缩放图像以适合画布?我的代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" width="100" height="100" verticalGap="0" borderStyle="solid" ini

如何在Flex中缩放图像以适合画布?我的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
         horizontalAlign="center"
         width="100" height="100"
         verticalGap="0" borderStyle="solid"
         initialize="onLoad()"
         horizontalScrollPolicy="off"
         verticalScrollPolicy="off">
    <mx:Canvas width="100%" height="100%" id="PictureBox" horizontalScrollPolicy="off"
         verticalScrollPolicy="off" />
    <mx:Label id="NameLabel" height="20%" width="100%"/>
    <mx:Script>
        <![CDATA[
        private function onLoad():void
        {
            var image:SmoothImage = data.thumbnail;

            image.percentHeight = 100;
            image.percentWidth = 100;
            this.PictureBox.addChild(image);

            var sizeString:String = new String();

            if ((data.fr.size / 1024) >= 512)
                sizeString = "" + int((data.fr.size / 1024 / 1024) * 100)/100 + " MB";
            else
                sizeString = "" + int((data.fr.size / 1024) * 100)/100 + " KB";

            this.NameLabel.text = data.name + " \n" + sizeString;

        }
        ]]>
        </mx:Script>
</mx:VBox>

= 512)
sizeString=“”+int((data.fr.size/1024/1024)*100)/100+“MB”;
其他的
sizeString=“”+int((data.fr.size/1024)*100)/100+“KB”;
this.namelab.text=data.name+“\n”+sizeString;
}
]]>
我正在尝试将图像:SmoothImage放入PictureBox并将其缩小


注意SmoothImage源于图像。

您需要确保已设置

image.scaleContent = true;
image.maintainAspectRatio = false;
这应该将内容缩放到swf加载程序的大小,并对其进行扭曲,使其填充图像组件的整个区域

这里有一个快速版本的工作

     <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
         horizontalAlign="center"
         width="100" height="100"
         verticalGap="0" borderStyle="solid"
         initialize="onLoad()"
         horizontalScrollPolicy="off"
         verticalScrollPolicy="off">
    <mx:Canvas width="100%" height="100%" id="PictureBox" horizontalScrollPolicy="off"
         verticalScrollPolicy="off" />
    <mx:Label id="NameLabel" height="20%" width="100%"/>
    <mx:Script>
        <![CDATA[
            import mx.controls.Image;

        private function onLoad():void
        {
            var image : Image = new Image()
            image.source = "http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png";
            image.scaleContent = true;
            image.maintainAspectRatio =false;
            image.percentWidth = 100;
            image.percentHeight = 100;

            PictureBox.addChild(image);

        }
        ]]>
    </mx:Script>
</mx:VBox>

您需要确保已设置

image.scaleContent = true;
image.maintainAspectRatio = false;
这应该将内容缩放到swf加载程序的大小,并对其进行扭曲,使其填充图像组件的整个区域

这里有一个快速版本的工作

     <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
         horizontalAlign="center"
         width="100" height="100"
         verticalGap="0" borderStyle="solid"
         initialize="onLoad()"
         horizontalScrollPolicy="off"
         verticalScrollPolicy="off">
    <mx:Canvas width="100%" height="100%" id="PictureBox" horizontalScrollPolicy="off"
         verticalScrollPolicy="off" />
    <mx:Label id="NameLabel" height="20%" width="100%"/>
    <mx:Script>
        <![CDATA[
            import mx.controls.Image;

        private function onLoad():void
        {
            var image : Image = new Image()
            image.source = "http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png";
            image.scaleContent = true;
            image.maintainAspectRatio =false;
            image.percentWidth = 100;
            image.percentHeight = 100;

            PictureBox.addChild(image);

        }
        ]]>
    </mx:Script>
</mx:VBox>


SmoothImage的来源是什么?图像?是的,它只是设置了平滑属性。scalex和scaley的一些工作原理。我不知道我现在需要的数学。SmoothImage从何而来?图像?是的,它只是设置了平滑属性。scalex和scaley的一些工作原理。我不知道我现在需要的数学知识。