Получить масштабированные размеры изображения для изображения искры - PullRequest
3 голосов
/ 19 августа 2011

Есть ли эквивалент для contentWidth и contentHeight для изображений искры?

Я могу получить размер самого компонента изображения, а также свойства sourceWidth и sourceHeight, чтобы получить немасштабированный размер изображения.

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

Любая помощь с благодарностью.

Ответы [ 2 ]

2 голосов
/ 22 августа 2013

Просто пытался решить эту проблему. Я нашел адекватное решение - использовать IMAGE_ID.transform.pixelBounds.height (или ширину). Обратите внимание, что это не будет установлено до тех пор, пока для изображения не сработает событие updateComplete. Не знаю, почему у FLEX нет простого свойства scaledWidth.

1 голос
/ 19 сентября 2011

Попробуйте расширить компонент Spark Image, добавив в него 2 новых свойства только для чтения, чтобы обеспечить ширину и высоту в качестве эквивалента contentWidth и contentHeight.

Следующее создаст 2 новых привязываемых свойства для возврата фактической масштабированной ширины и высоты изображения, отображаемого внутри компонента Spark Image.

/**
 * Returns the width of the image display taking into account the actual 
 * constraints of the container.  If no scaling has occurred the actual
 * width of the control is returned.
 */ 
[Bindable(event="scaledWidthChanged")]
public function get scaledWidth():Number
{
    var num:Number = this.width;

    if (scaleMode == "letterbox")
    {
        try
        {
            if ( (width > 0) && (sourceWidth < sourceHeight) )
            {
                num = (sourceWidth/sourceHeight) * width;                       
            }                   
        }
        catch(e:Error)
        {
            num = this.width;
        }
    }

    return num;
}

/**
 * Returns the height of the image display taking into account the actual 
 * constraints of the container.  If no scaling has occurred the actual
 * height of the control is returned.
 */ 
[Bindable(event="scaledHeightChanged")]
public function get scaledHeight():Number
{
    var num:Number = this.width;

    if (scaleMode == "letterbox")
    {
        try
        {
            if ((height > 0) && (sourceHeight < sourceWidth))
            {
                num = (sourceHeight/sourceWidth) * height;
            }                   
        }
        catch(e:Error)
        {
            num = this.height;
        }
    }

    return num;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...