2012-03-12 3 views
0

Au cours des dernières heures, j'ai essayé de cloner une image dans Flex (en utilisant les composants Spark, mais aussi en essayant de convertir entre Bitmap et BitmapImage).Cloner une image dans Flex 4.6

Ce que j'essaye exactement est de créer une application de peinture simple qui garde la trace de chaque coup de pinceau. Dès que l'image sur le canevas a changé, elle doit être clonée et ensuite le clone doit être placé dans le panneau d'historique au bas de l'application.

Ce que j'ai essayé comprennent:

  • L'utilisation ObjectUtils.clone (Object)
  • Création BitmapData Image.content, puis en faire une Bitmap et afficher simplement (image n'a pas de contenu champ, il dit)
  • Effectuer un byte-copy et d'autres que j'ai pu trouver sur internet, bien sûr.

Donc, fondamentalement, comment cloner une image (Spark Image) dans Flex 4.6?

Merci beaucoup!

- Danny Nophut

Répondre

10

Au lieu de vous cloner pouvez obtenir l'image du dessin et définir le bitmap de l'image en tant que source à l'image de l'histoire, faire quelque chose comme ça

private function getBitmapData(target:DisplayObject) : BitmapData 
{ 

    //target.width and target.height can also be replaced with a fixed number. 
    var bd : BitmapData = new BitmapData(target.width, target.height); 
    bd.draw(target); 
    return bd; 
} 

En Dans certains cas, si la largeur et la hauteur de la cible ne fonctionnent pas, vous pouvez utiliser la méthode getbounds pour obtenir les limites de l'objet et, à partir des limites, prendre la largeur et la hauteur.

+1

+1 de moi. Je n'ai pas validé le code; mais le concept est ce que je l'aurais recommandé. – JeffryHouser

+0

Merci beaucoup, cela semble fonctionner :) Maintenant tout ce que je fais avec cela est de le transformer en un objet Bitmap et l'afficher? –

+0

@ www.Flextras.com merci frère. – Triode

1

Il y a une fonction clone sur un BitmapData:

public class EZB2ParkObject extends Image implements IEZB2ParkObject 
{ 

    public function clone():IEZB2ParkObject{ 
     var n:IEZB2ParkObject = new EZB2ParkObject(); 
     n.id = this.id; 
     n.source = new Bitmap(BitmapData(this.source.bitmapData).clone()); 
     n.dimensions = this.dimensions; 
     n.assetId = this.assetId; 
     return n; 
    } 
} 
Questions connexes