WPFにおける開発でGeometry変換に対する入れ子(ネスト)はGeometryGroupを入れ子にすることで可能なことは知っていました。

GeometryGroup
┗ GeometryGroup
┃  ┗ Geometry
┃  ┗ TranferGroup
┃      ┣ TranslateTransform
┃      ┣ ScaleTransform
┃      ┗ RotateTransform
┗ GeometryGroup
    ┗ TranferGroup
        ┣ TranslateTransform
        ┣ ScaleTransform
        ┗ RotateTransform

(それぞれChildrenやTranferに加えています)

最上位のGeometryGroupでは全ての変換が行われた結果がみることができます。

では同じことをXAMLで表現するにはどうしたらいいのでしょう?

XAMLでは<RenderTransfer>を利用し、各変換を同時に行うには<TranslateTransform><ScaleTransform><RotateTransform>を利用します。
例えばCanvas内で変換するには

<Canvas.RenderTransform>
    <TransformGroup>
        <ScaleTransform />
    </TransformGroup>
</Canvas.RenderTransform>

となります。

変換を入れ子にするにはTransferGroupを重ねればいいので

<Canvas.RenderTransform>
    <TransformGroup>
        <TransformGroup>
            <ScaleTransform /> <!-- VolumeSliderなどに連動 --/>
        </TransformGroup>
        <TransformGroup>
            <ScaleTransform ScaleY="-1"/> <!-- -->
        </TransformGroup>
    </TransformGroup>
</Canvas.RenderTransform>

このようにすると一か所で拡大縮小と座標反転がおこなえるようになります。

ABOUT ME
Nozomu.Kon
AI/ITコーチ & サポート
私がやっているのは、AIやITを「使えるようになる」ことそのものではありません。仕事が不自由なく進み、本来やりたいこと・届けたいことを実現する一歩を、手助けしています。作業を任せたい方にはサポートを。自分でやりたい方には、コーチングを。