2009-07-31 2 views
3

Я пытаюсь показать файлы изображений (jpg, png, gif), которые могут быть больше, чем доступная область отображения. Я встроил изображение внутри cCanvas (чтобы получить прокрутку), но большие изображения не отображаются полностью.Просмотр огромных прокручиваемых изображений в изображении?

Очень большие изображения (например, 2480 x 3507) имеют верхнюю или верхнюю и нижнюю части изображения, обрезанные с помощью прокручиваемого изображения.

Какая максимальная графика может отображаться с помощью функции mx.controls.Image?

Благодаря

ответ

5

Предел 2880 пикселей для BitmapDatas, для DisplayObjects существует ограничение в 8191 пиксель. Вы можете обойти эти ограничения, используя BitmapDataUnlimited-класс доступного здесь: http://code.google.com/p/bitmapdataunlimited/

Однако, если производительность важна, я рекомендовал бы дать такие большие изображения состоят из нескольких меньших вместо этого. Даже если вы не будете повторно использовать эти более мелкие или не позаботьтесь о том, чтобы удалить их из displayList или установить их видимое свойство на false, все равно будет увеличение производительности, так как вспышка автоматически обнаруживает, что они находятся вне сцены и не должны быть оказанным.

Edit:

Я забыл сказать, что 2880px предел применяется только при создании BitmapDatas вручную, изображения больше, чем до сих пор могут быть загружены в, и их BitmapDatas (которые больше, чем 2880px) можно получить доступ и манипулировать , Вы можете легко иметь Картинку с BitmapData, как большой, как видовом, то вы можете установить его BitmapData, делая что-то вроде:

viewportBitmapData.copyPixels(sourceBitmapData, new Rectangle(x,y,viewportWidth, viewPortHeight), new Point(0,0)) 

При прокрутке, вы просто могли бы сделать выше на каждом кадре Или, если производительность важно, вы можете прокручивать (если scrollingDistance меньше, чем viewportSize), используйте viewportBitmapData.scroll (x, y) для смещения целого bitmapData, а затем скопируйте только новые пиксели.

+0

Могу ли я _load_ всего изображения, вручную установите полосы прокрутки и нарисуйте только область данных изображения, которые вписываются в область просмотра (смещены полосами прокрутки)? –

4

Я прочитал, что предел составляет 2880 пикселей на измерение в Flash, 9. В Flash 10 предел выше. Проверьте, какую версию вы компилируете.

Возможно, вы можете нарезать изображение на более мелкие куски и собрать их в Flex.

0

Если есть разница, которая FlashPlayer вы ориентируетесь:

версии VS максимальный bitmapsize

Flashplayer -9: 2880x2880 точек
Flashplayer 10: 4096x4096 точек
Flashplayer 11: неограниченное

Смежные вопросы