代码之家  ›  专栏  ›  技术社区  ›  Daniel A. White

在画布中拟合柔性图像

  •  0
  • Daniel A. White  · 技术社区  · 15 年前

    如何在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>
    

    我正在尝试获取图像:将图像平滑到PictureBox中,并将其缩小。

    注释 SmoothImage源自图像。

    1 回复  |  直到 15 年前
        1
  •  6
  •   James Hay    15 年前

    你得确定你已经准备好了

    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>
    
    推荐文章