Ну, я думаю, что то, что вы пытаетесь сделать, может быть достигнуто с помощью следующего кода, это в основном сведет на нет работу, проделанную внутри, чтобы масштабировать ресурс на основе размера экрана, в то же время позволяя ему масштабировать другие компоненты, основанные на DPI, я не уверен, как именно это будет на практике.
import mx.core.mx_internal;
...
var bgb : Bitmap = new TabBarPng();
bgb.scaleX = 1 / systemManager.mx_internal::densityScale;
bgb.scaleY = 1 / systemManager.mx_internal::densityScale;
или другая возможность, которую я думаю:
var mul : MultiDPIBitmapSource = new MultiDPIBitmapSource();
mul.source160dpi = new TabBarPng();
var bgb : BitmapImage = new BitmapImage();
bgb.source = mul;
var gr : Graphic = new Graphic();
gr.width = 100 / systemManager.mx_internal::densityScale; //not sure if you'd want densityScale being applied here or what? Same below just a matter of testing on more devices
gr.height = 100 / systemManager.mx_internal::densityScale;
gr.addElement(bgb)
addChild(gr);
[Из документа API MultiDPIBitmapSource]
Этот класс предоставляет список растровых изображений для различных плотностей времени выполнения. Он поставляется в качестве источника для BitmapImage или Image и в виде значка кнопки. Компоненты будут использовать Application.runtimeDPI для выбора изображения для отображения.
Я думаю, что эта документация:
http://help.adobe.com/en_US/flex/mobileapps/WS19f279b149e7481c682e5a9412cf5976c17-8000.html
, вероятно, все еще является самым ясным объяснением, которое вы найдете, хотя не совсем ясно, как это повлияет на приложение во время выполнения на разных устройствах. Лучший вариант - просто протестировать на как можно большем количестве устройств (или поддерживать).