hi,

here is an sample application which will help you to understand,..
taking snapshot of particular area of the image

In this example a image is loaded into a Image Container user can
click and define the area of snapshot to be taken
the snapshot is displayed in another Image Container

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="absolute" creationComplete="init(event)">
<mx:Script>
        <![CDATA[
                import mx.containers.Canvas;
                import mx.events.FlexEvent;
            import mx.graphics.ImageSnapshot;
            import flash.display.*
            import flash.geom.Point;
            [Bindable]
            private var mesg:String
            private var x0:Number
            private var y0:Number
            private var w:Number
            private var h:Number
            private var temp:Canvas
            private function init(e:FlexEvent):void
            {
                temp=new Canvas()
                this.addChild(temp)
                temp.x=source.x
                temp.y=source.y
                mesg="INIT"
                this.addEventListener(MouseEvent.MOUSE_DOWN,startDraw)
                this.addEventListener(MouseEvent.MOUSE_UP,stopDraw)
            }
            private function takeSnapshot():void {
                var imageBitmapData:BitmapData =
ImageSnapshot.captureBitmapData(source);
                var bmpD:BitmapData=new BitmapData(w,h)
                var rect:Rectangle=new Rectangle(x0,y0,w,h);
               ///*Method_1
                var mat:Matrix=new Matrix()
                mat.translate(-x0,-y0)
                bmpD.draw(imageBitmapData,mat)
               //*/
               /*Method_2
                                bmpD.copyPixels(imageBitmapData,rect,new 
Point(0,0))
                                */

                                snapshotHolder.width=w
                                snapshotHolder.height=h
                snapshotHolder.source = new Bitmap(bmpD);
                mesg="SNAPSHOT_TAKEN"
            }
            private function startDraw(e:MouseEvent):void
            {
                x0=source.mouseX
                y0=source.mouseY
                mesg=String(x0)+","+String(y0)+"RECT_START"
                this.addEventListener
(MouseEvent.MOUSE_MOVE,defineRectangle)
            }
             private function stopDraw(e:MouseEvent):void
            {
                w=source.mouseX-x0
                h=source.mouseY-y0
                if(w<0)
                {
                        x0=source.mouseX
                        w=Math.abs(w)
                }
                        if(h<0)
                {
                        y0=source.mouseY
                        h=Math.abs(h)
                }
                mesg="RECT_STOPPED"
                this.removeEventListener
(MouseEvent.MOUSE_MOVE,defineRectangle)
                takeSnapshot()
            }
            private function defineRectangle(e:MouseEvent):void
            {
                w=source.mouseX-x0
                h=source.mouseY-y0
                mesg=String(w)+","+String(h)+": ONDRAW"

                temp.graphics.clear()
                temp.graphics.lineStyle(1,0xff0000,.5)
                temp.graphics.drawRect(x0,y0,w,h)
            }
        ]]>
</mx:Script>
<mx:HBox paddingTop="15" paddingLeft="15">
<mx:Image source="assets/test.jpg" width="100%" height="100%"
id="source" maintainAspectRatio="true"/>
<mx:Image id="snapshotHolder"/>
</mx:HBox>
<mx:Label text="{mesg}" fontSize="10" paddingLeft="15"/>
</mx:Application>

--

You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en.


Reply via email to