That's the ticket!
This worked like a charm.
Again, thanks to everyone who responded - and I'll check out the
solutions offered by Grant and Ely as well. Based on the work they
show in their blogs, they are both operating on a slightly different
level than myself with Flex, so I'm sure their answers have merit.

Dave
 

--- In flexcoders@yahoogroups.com, "Doug McCune" <[EMAIL PROTECTED]> wrote:
>
> if you just want a quick way to make your code work, try this:
> 
> private function myDrawing():void{
> var myBitmapData:BitmapData = new BitmapData(530, 445);
> myBitmapData.draw(myWorkspace1);
> var bmp:Bitmap = new Bitmap(myBitmapData);
> 
> var uiComp:UIComponent = new UIComponent();
> uiComp.addChild(bmp);
> 
> showDrawing.addChild(uiComp);
> }
> 
> It's the same approach as Ely posted or Grant uses, basically wrap your
> Bitmap in a UIComponent. But this way you don't need external
classes, and
> you should be able to just add two lines of code and get it working.
> 
> Doug
> 
> On 21 Mar 2007 12:12:44 -0700, Troy Gilbert <[EMAIL PROTECTED]> wrote:
> >
> >   No, the issue is exactly what I described: objects that implement
> > IUIComponent (which Canvas does, TextField does not) add a
restriction to
> > the inherited (from DisplayObjectContainer) addChild methods. The
> > restriction is that the child *actually* has to implement
IUIComponent. This
> > is so the component can call the "measuredHeight", etc., methods
to preform
> > layout (whereas a standard DisplayObjectContainer doesn't perform
layout and
> > thus doesn't need the additional properties).
> >
> > What Grant Skinner's blog post describes is really just a
*slightly* more
> > verbose version of what Ely posted (with several examples of how
to use it
> > in both MXML and AS). It also has the nice upside that if your
DisplayObject
> > resizes it can automatically resize the UIComponent.
> >
> > So, go over to Grant's blog and check out the post. It'll clear
everything
> > up.
> >
> > The trick with hijacking an image is interesting, but really
unnecessary.
> > Grant's solution is only about two dozen lines of code (with
comments) and
> > works like a charm (you may need to add one or two checks for
nulls for
> > safety's sake depending on your use case, otherwise it seems
production
> > ready to me).
> >
> > And the cloning... well, I've got no idea how that would make a
> > difference! ;-)
> >
> > Troy.
> >
> >
> >
> > On 3/21/07, tosadavemgr < [EMAIL PROTECTED]> wrote:
> > >
> > >   It is interesting that I would get 4 replies, 4 completely
different
> > > answers. My entire week is going this way. As is my Flex project.
> > > So my choices were:
> > >
> > > 1. Try the Grant Skinner blog and his DisplayObjectWrapper. Not
> > > exactly sure how this works or how to use it within my code.
> > > 2. Add .clone to my existing syntax, which I tried without luck
> > > 3. Have an image load an image and then copy that - interesting,
yet I
> > > have a canvas loaded with many bitmaps and need to make a bitmap of
> > > the canvas ??
> > > 4. And finally, from Ely, and extension of the UIComponent
class. I'm
> > > sure this is something, but I'm not sure how to use it.
> > >
> > > I really appreciate the helpful spirit on this message board. My own
> > > green-ness with Flex is part of the problem, but I thought for
sure my
> > > original direction would work since I pulled it almost directly from
> > > the Flex docs.
> > >
> > > Here's the code from Flex Docs:
> > >
> > > import flash.display.Bitmap;
> > > import flash.display.BitmapData;
> > > import flash.text.TextField;
> > >
> > > var tf:TextField = new TextField();
> > > tf.text = "bitmap text";
> > >
> > > var myBitmapData:BitmapData = new BitmapData(80, 20);
> > > myBitmapData.draw(tf);
> > > var bmp:Bitmap = new Bitmap(myBitmapData);
> > > this.addChild(bmp);
> > >
> > > They are copying a TextField rather than a canvas. Is that the
issue?
> > > OK to turn a TextField into a bitmap, but not a canvas?
> > >
> > > Dave
> > >
> > >
> > > --- In flexcoders@yahoogroups.com
<flexcoders%40yahoogroups.com>, "Ely
> > > Greenfield" <egreenfi@> wrote:
> > > >
> > > >
> > > >
> > > >
> > > > [DefaultProperty("content")]
> > > > class RawContainer extends UIComponent
> > > > {
> > > > private var _content:Array = [];
> > > > public function set content(value:Array):void
> > > > {
> > > > _content = value;
> > > > for(var i:int = 0;i<_content.length;i++)
> > > > {
> > > > addChildAt(_content[i],i);
> > > > }
> > > > while(numChildren > _content.length)
> > > > removeChildAt(_content.length);
> > > > }
> > > > public function get content():Array { return _content }
> > > > }
> > > >
> > > > Ely.
> > > >
> > > >
> > > > ________________________________
> > > >
> > > > From: flexcoders@yahoogroups.com
<flexcoders%40yahoogroups.com>[mailto:flexcoders@yahoogroups.com<flexcoders%40yahoogroups.com>]
> > > On
> > > > Behalf Of Troy Gilbert
> > > > Sent: Wednesday, March 21, 2007 9:42 AM
> > > > To: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>
> > > > Subject: Re: [flexcoders] copying bitmap data
> > > >
> > > >
> > > >
> > > > Yeah, the problem is that the Canvas container only allows
children
> > > that
> > > > implement IUIComponent. It would have been real nice if Adobe had
> > > > provided a "raw" container that did no layout of its children (but
> > > > implemented IUIComponent itself), but they didn't.
> > > >
> > > > Fortunately, Grant Skinner has provided just such a container...
> > > > DisplayObjectWrapper. Check out his blog or Google for it.
> > > >
> > > > If you wrap your Bitmap with the DisplayObjectWrapper first you'll
> > > then
> > > > be able to add it (or rather, the DisplayObjectWrapper) to the
canvas.
> > >
> > > >
> > > > Troy.
> > > >
> > > >
> > > >
> > > > On 21 Mar 2007 08:18:46 -0700, tosadavemgr <tosadavemgr@
> > > > <mailto:tosadavemgr@> > wrote:
> > > >
> > > > I have a canvas in my layout and the application allows dragging
> > > > and
> > > > dropping items into the canvas. I need to be able to grab a
> > > > bitmap of
> > > > the canvas when the user is finished, so I can display the
> > > > drawing on
> > > > another panel, and in the FlexPrintJob function.
> > > >
> > > > I've tried using this code, initiated from a button:
> > > >
> > > > private function myDrawing():void{
> > > > var myBitmapData:BitmapData = new BitmapData(530, 445);
> > > > myBitmapData.draw(myWorkspace1);
> > > > var bmp:Bitmap = new Bitmap(myBitmapData);
> > > > showDrawing.addChild(bmp); //this isn't working
> > > >
> > > > }
> > > >
> > > > myWorkspace1 is the ID of the canvas where everything is
> > > > dropped.
> > > > I have a canvas with the ID=showDrawing that I'd like the bitmap
> > > > to
> > > > appear in.
> > > > Anyone know what I need to add to the above function to get that
> > > > done?
> > > >
> > > > Dave
> > > >
> > >
> > >
> >  
> >
>

Reply via email to