Полный Flex отображать объект на изображение - PullRequest
1 голос
/ 10 августа 2011

У меня есть требование для генерации UIComponent, отображаемого в изображение.Я использую PNGEncoder, а также JPEGEncoder для генерации изображения.

var bd:BitmapData = new BitmapData(uiComp.measuredWidth,uiComp.measuredHeight);
bd.draw(uiComp, new Matrix()); 
var bitmap:Bitmap = new Bitmap(bd); 
bytes = jpgenc.encode(bd);  

Код отлично работает в нормальных сценариях.Но проблема возникает на экранах с низким разрешением, если на холсте есть полоса прокрутки, только отображаемое содержимое, я имею в виду пропуск содержимого ниже прокручиваемого местоположения.Есть ли способ, которым я могу полностью преобразовать холст в изображение, даже если он имеет полосу прокрутки!Пожалуйста, помогите!

Ура, PK

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Я думаю, ImageSnapshot может сделать снимок экрана, даже если компонент обрезан или даже если его свойство visible установлено в false.

import mx.core.IUIComponent;
import mx.graphics.ImageSnapshot;

private function takeSnapshot(source:IBitmapDrawable):void {
    var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(source);
    var imageByteArray:ByteArray = imageSnap.data as ByteArray;
    swfLoader.load(imageByteArray);
}
0 голосов
/ 22 сентября 2013

Используя Imagesnap с PNGEncoder, я смог получить снимок экрана со сжатием

import flash.filesystem.FileStream;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import mx.graphics.ImageSnapshot;
import mx.graphics.codec.PNGEncoder;

... ... ... ...

ImageSnapshot.defaultEncoder = PNGEncoder;
var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(FlexGlobals.topLevelApplication as IBitmapDrawable);
var stream:FileStream = openStream("screenshot.png");
stream.writeBytes(imageSnap.data);
stream.close();

... ... ... ...

private static function openStream(fileName:String):FileStream
    {
        var file:File = File.documentsDirectory.resolvePath(fileName);
        var stream:FileStream = new FileStream();
        stream.open(file, FileMode.WRITE);
        return stream;
    }
...