0

私は次のマークアップを持っています:

<s:Group width="100%" height="100%"> 
    <s:BorderContainer borderWeight="3" borderColor="black" cornerRadius="5" width="100%" height="100%">
        <s:Path> 
            <s:stroke>
                <s:SolidColorStroke color="black" />
            </s:stroke>
            <s:data>M 14.153 14.788 C 13.856 15.25 13.161 15.628 12.612 15.628 L 0.766 15.628 C 0.216 15.628 -0.028 15.228 0.225 14.739 L 3.307 8.765 C 3.56 8.276 3.56 7.477 3.307 6.988 L 0.225 1.014 C -0.028 0.525 0.216 0.125 0.766 0.125 L 12.612 0.125 C 13.161 0.125 13.856 0.503 14.153 0.965 L 18.07 7.036 C 18.367 7.499 18.367 8.254 18.07 8.717 L 14.153 14.788 Z</s:data>
        </s:Path>
    </s:BorderContainer>
</s:Group>

このコンテナのパスをコンテナに基づいてサイズ変更したいと思います。SVGとSilverlightには「ViewBox」の概念がありますが、Flexではその概念を見つけることができません。

幅と高さを100%に設定すると、作品の種類が多くなりますが、パスが多い場合は、いじくり回す必要があります。さらに、それはあなたが望むように正確に動作しません(それを試してブラウザのサイズを変更してください)

4

3 に答える 3

0

探していたものが見つかりました。AutoFitAreaは、私が望むことを正確に実行します。

http://www.greensock.com/autofitarea/

于 2011-03-30T11:07:05.607 に答える
0

一定のアスペクト比でパスをスケーリングしたいですか?私はなんとかこのようにそれをすることができました:

<s:BorderContainer id="container"
   borderWeight="3" borderColor="black" cornerRadius="5"
   width="100%" height="100%">
   <s:Path
       width="{Math.min(container.width - 10, container.height - 10)}"
       height="{Math.min(container.width - 10, container.height - 10)}">

それはさらにいじくり回しますが、実行時にそのような関数にプロパティをバインドすることは可能です。

編集:

一定のアスペクト比は必要ありません。コンテナと一緒に成長させたいです。

次に、次のようなものを書くことができます(正確にはテストされていません):

for each (var child:DisplayObject in container.children) {
    if (child is Path) {
        child.percentWidth = child.percentHeight = 100;
    }
}

これをアプリケーションの初期化で実行すると、パスがコンテナーにスケーリングされます(ただし、デザインモードではスケーリングされません)。

于 2010-11-04T18:51:41.923 に答える
0

パスをs:Groupでラップし、resizeModeを設定できます(参考までに、これはパスをs:Graphicでラップするのと同じことを実現します)。

<s:BorderContainer borderWeight="1" borderColor="black" cornerRadius="5" width="100%" height="100%" >
        <s:Group width="100%" height="100%" resizeMode="scale">
            <s:Path> 
                <s:stroke>
                    <s:SolidColorStroke color="black" scaleMode="none" />
                </s:stroke>
                <s:data>M 14.153 14.788 C 13.856 15.25 13.161 15.628 12.612 15.628 L 0.766 15.628 C 0.216 15.628 -0.028 15.228 0.225 14.739 L 3.307 8.765 C 3.56 8.276 3.56 7.477 3.307 6.988 L 0.225 1.014 C -0.028 0.525 0.216 0.125 0.766 0.125 L 12.612 0.125 C 13.161 0.125 13.856 0.503 14.153 0.965 L 18.07 7.036 C 18.367 7.499 18.367 8.254 18.07 8.717 L 14.153 14.788 Z</s:data>
            </s:Path>
        </s:Group>
    </s:BorderContainer>

ストロークのscaleModeは、それが探しているものであるかどうかを線の太さでチェックし続けます。

パスの左右にパディングが表示されている理由はわかりませんが、パスの幅と高さを100%に設定すると、手に負えなくなります。パスデータを再確認することをお勧めします。

于 2012-03-20T20:56:49.603 に答える