Not sure, but it seems like you're not realizing that the Image component 
itself is a container.

<Canvas><Image>loaded_jpg</Image></Canvas>

So you don't need to *tell the Image component to center inside the canvas*, 
but rather you need to *center the loaded image inside 
the Image component* and set the Image component to 100% width and height (so 
it completely fills the canvas).

The following should do the trick.

 <mx:Canvas width="250" height="250" borderStyle="solid">
  <mx:Image
   width="100%"
   height="100%"
   source="path_to_image.jpg"
   verticalAlign="middle"
   horizontalAlign="center"
   scaleContent="true"
   maintainAspectRatio="true"
   />
 </mx:Canvas>

regards,
Muzak

----- Original Message ----- 
From: "herklano" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Monday, April 02, 2007 11:07 PM
Subject: [flexcoders] Re: is there a simple way to center a loaded image?


the image is dynamic loaded through a database.

i want to scale proportionally the image to the canvas boundaries and
then center it.

i allready got it working with this code, but thx for the help anyway :)

<mx:Canvas x="10" y="10" width="190" borderStyle="none"
backgroundColor="#d0d0d0" height="190">
<mx:Image id="SMCDadosImg" complete="changeDadosImg(event);" />
</mx:Canvas>

private function changeDadosImg(event:Event):void
            {
            var pW_DadosImg:Number;
           var pH_DadosImg:Number;

           pW_DadosImg = event.target.contentWidth;
           pH_DadosImg = event.target.contentHeight;

           var scaleF:Number;

       trace("W.ini = "+ pW_DadosImg);
       trace("H.ini = "+ pH_DadosImg);

       if (pW_DadosImg > pH_DadosImg)
       {
       scaleF = 190/pW_DadosImg;
       pH_DadosImg = scaleF * pH_DadosImg;

       event.target.width = 190;
       event.target.height = pH_DadosImg;

       trace("scaleH = " + scaleF);
       }
       else if (pW_DadosImg < pH_DadosImg)
       {
       scaleF = 190/pH_DadosImg;
       pW_DadosImg = scaleF * pW_DadosImg;

       event.target.height = 190;
       event.target.width = pW_DadosImg;

       trace("scaleW = " + scaleF);
       }
       else if (pW_DadosImg == pH_DadosImg)
       {
       event.target.height = 190;
       event.target.width = 190;
       }

       event.target.y = (190/2) - (event.target.height/2);
       event.target.x = (190/2) - (event.target.width/2);

       pW_DadosImg = event.target.width;
           pH_DadosImg = event.target.height;

       trace("W.2 = "+ pW_DadosImg);
       trace("H.2 = "+ pH_DadosImg);

            }





--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> OK, I'm now confused.  If you want an image to fill a canvas then you
> don't really need to center it (unless there's going to be distortion
> from aspect ratio changing).  And, if you fill the Canvas, I'd think
> you'd just use the backgroundImage instead.
>
> Can you provide more details on the scenario?
> -Alex
>
> ________________________________
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of herklano
> Sent: Monday, April 02, 2007 7:51 AM
> To: [email protected]
> Subject: [flexcoders] Re: is there a simple way to center a loaded
> image?
>
>
>
> hi,
>
> i tried that aprouch but the problem is that i want to scale the image
> to the canvas boundaries, so i really think the only way to do it is
> through AS.
>
> --- In [email protected] <mailto:flexcoders%40yahoogroups.com>
> , "B. Korsmit" <bmod@> wrote:
> >
> > Hi Herklano,
> >
> > You probably want to use the horizontalAlign and verticalAlign
> styles to
> > do this?
> >
> > <mx:Image
> > id="SMCDadosImg"
> > horizontalCenter="0"
> > verticalCenter="0"
> > horizontalAlign="center"
> > verticalAlign="middle"
> > />
> >
> > That's what I often use...
> >
> >
> >
> > herklano wrote:
> > >
> > > hi,
> > >
> > > i'm kinda noob at coding in general, but i'm trying to work my way
> to
> > > get a image that is loaded in a Canvas to center to it after it has
> > > been loaded to it.
> > >
> > > i'm trying this but it doesn't work:
> > >
> > > <mx:Canvas
> > > x="10" y="10" width="190" borderStyle="none"
> > > backgroundColor="#d0d0d0" height="190">
> > > <mx:Image id="SMCDadosImg"
> > > complete="changeSMCDadosImg(event);" horizontalCenter="0"
> > > verticalCenter="0"/>
> > > </mx:Canvas>
> > >
> > > private function changeSMCDadosImg(event:Event):void
> > > {
> > > var pW_SMCDadosImg:Number;
> > > var pH_SMCDadosImg:Number;
> > >
> > > pW_SMCDadosImg = event.target.width;
> > > pH_SMCDadosImg = event.target.height;
> > >
> > > trace("W = "+ pW_SMCDadosImg);
> > > trace("H = "+ pH_SMCDadosImg);
> > >
> > > if (pW_SMCDadosImg > pH_SMCDadosImg)
> > > {
> > > SMCDadosImg.height = 190;
> > > SMCDadosImg.width = pW_SMCDadosImg/(190*pH_SMCDadosImg);
> > > SMCDadosImg.x = 190/2 - SMCDadosImg.width/2;
> > > }
> > > else if (pW_SMCDadosImg < pH_SMCDadosImg)
> > > {
> > > SMCDadosImg.width = 190;
> > > SMCDadosImg.height = pH_SMCDadosImg/(190*pW_SMCDadosImg);
> > > SMCDadosImg.y = 190/2 - SMCDadosImg.height/2;
> > > }
> > > else if (pW_SMCDadosImg == pH_SMCDadosImg)
> > > {
> > > SMCDadosImg.height = 190;
> > > SMCDadosImg.width = 190;
> > > }
> > > }
> > >
> > >
> >
>




Reply via email to