Подгонка гибкого изображения на холсте - PullRequest
0 голосов
/ 19 февраля 2009

Как мне масштабировать изображение в Flex, чтобы оно соответствовало Canvas? Мой код выглядит следующим образом:

<?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>

Я пытаюсь получить изображение: SmoothImage в PictureBox и уменьшить его.

Примечание SmoothImage происходит от Image.

1 Ответ

6 голосов
/ 19 февраля 2009

вам нужно убедиться, что вы установили

image.scaleContent = true;
image.maintainAspectRatio = false;

Это должно масштабировать содержимое до размера загрузчика swf и искажать его так, чтобы оно заполняло всю область компонента Image.

Вот краткая версия работы

     <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...