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 > > > > > > > > > > > > > > >