0

このコード キャンバスでは、id layout_cnv を水平方向の中央揃えと垂直方向の中央揃えに配置しています。画像のズームインはズームですが、上と左からの表示ではなく、内側に行くとは、左と上からのスクロールではないことを意味します

左上隅からではなく、中心位置でズームインしたい。

私を助けてください

<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
           xmlns:mx="library://ns.adobe.com/flex/mx"
           xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
    <![CDATA[
        import mx.events.SliderEvent;

        private function changeZoom(event:SliderEvent) : void
        {
            layout_cnv.scaleX = event.target.values[0]*2/100;
            layout_cnv.scaleY = event.target.values[0]*2/100;
        }           

        private function calculateCoordinates() : void
        {
            var x : Number = (canvas.width - layout_cnv.width) / 2;

            x = x < 0 ? 0 : x;
            var y : Number = (canvas.height - layout_cnv.height) / 2;
            y = y < 0 ? 0 : y;

            layout_cnv.move(x, y);  

            callLater(calculateCoordinates);
        }

        private function adjustDefaultZoom() : void
        {
            layout_cnv.scaleX = slider.values[0]/100*2;
            layout_cnv.scaleY = slider.values[0]/100*2;
            callLater(calculateCoordinates);
        }

        private function myDataTipFunc(val:String):String {
            return  String(val)+ "%";
        }
    ]]>
</fx:Script>

<mx:Panel title="Zoom Demo" width="100%" height="100%">     
    <mx:Canvas id="canvas" width="100%" height="100%"  horizontalScrollPosition="500">          
        <mx:Canvas visible="true" id="layout_cnv" creationComplete="adjustDefaultZoom()"  borderStyle="solid" height="300" width="500" verticalCenter="0" horizontalCenter="0"
                   verticalScrollPolicy="off" horizontalScrollPolicy="off" backgroundColor="#FFFFFF">           
            <mx:Image id="swfContainer" source="thumbImages/1.jpg"  x="0" y="0" width="100%" height="100%"/>        
        </mx:Canvas>
    </mx:Canvas>

    <mx:ControlBar horizontalAlign="center">
        <mx:HSlider id="slider" width="400" minimum="1" maximum="100" labels="['0%','100%']" values="[50]" tickInterval="10" snapInterval="1" liveDragging="true" change="changeZoom(event)"
                    dataTipFormatFunction="myDataTipFunc" />
    </mx:ControlBar>        
</mx:Panel>

ありがとう、ニティン

4

0 に答える 0