J'essaye d'enregistrer un composant en tant que fichier JPG et je n'arrive pas à obtenir le bitmapData.draw() pour me donner les pixels que j'attends et à la place je vois un rectangle blanc uni quand j'ouvre le résultat Fichier JPG. Je crée d'abord un objet qui contient une image et une légende (le MultigraphCanvas ci-dessous) et quand j'affiche l'objet comme un pop-up il semble parfait - cependant quand j'essaye de le dessiner comme un bitmap puis de l'encoder et l'enregistrer comme un JPG Je ne me retrouve pas avec la même image que je peux afficher sur l'écran. Voici le code:Flex BitmapData.draw() dessine uniquement un rectangle blanc - puis-je dessiner tous les éléments d'un objet d'affichage?
private function saveAsFile(title:String):void
{
// make a canvas containing the multigraph and title
var multigraphCanvas:MultigraphCanvas = new MultigraphCanvas();
multigraphCanvas.initialize();
multigraphCanvas.multigraphGroup = multigraphGroup;
multigraphCanvas.titleText.text = title;
this.addElement(multigraphCanvas);
var matrix:Matrix = new Matrix()
matrix.tx = 0;
matrix.ty = 0;
var multigraphCanvasBitmapData:BitmapData = new BitmapData(multigraphCanvas.width, multigraphCanvas.height, true, 0xffffffff);
multigraphCanvasBitmapData.draw(multigraphCanvas, matrix);
var multigraphCanvasImage:Image = new Image();
multigraphCanvasImage.load(new Bitmap(multigraphCanvasBitmapData));
multigraphCanvasImage.content.width = multigraphCanvas.width;
multigraphCanvasImage.content.height = multigraphCanvas.height;
var multigraphCanvasImageBitmapData:BitmapData = new BitmapData(multigraphCanvas.width, multigraphCanvas.height, true, 0xffffffff);
multigraphCanvasImageBitmapData.draw(multigraphCanvasImage);
// DEBUGGING
PopUpManager.addPopUp(multigraphCanvas, this);
// DEBUGGING
var debugImage:Image = new Image();
debugImage.source = multigraphCanvasImageBitmapData;
var debugTitleWindow:TitleWindow = new TitleWindow();
debugTitleWindow.addElement(debugImage);
PopUpManager.addPopUp(debugTitleWindow, this);
// encode the canvas bitmap into a JPG byte array
var jpgEncoder:JPEGEncoder = new JPEGEncoder(85);
var jpgByteArray:ByteArray = jpgEncoder.encode(multigraphCanvasImageBitmapData);
// save the JPG byte array as a file
var fileReference:FileReference = new FileReference();
fileReference.save(jpgByteArray, title + ".jpg");
}
Puis-je attendre la méthode BitmapData.draw() pour dessiner chaque composant de l'objet d'affichage il est passé, ou est-il rendu juste le plus élevé élément et aucun des enfants (ce que ça me ressemble)?
Comment les obtenir dans l'arborescence? Ajouter le composant en tant qu'enfant ou élément du composant qui est un objet affiché? –