3

RenderTransformOrigin場所を変更せずに要素を変更する方法を知りたいです。RenderTransformOriginwill を変更すると要素の位置に影響することに気付きました。

を変更する前と変更した後の要素の位置の間の値を計算するXにはどうすればよいですか?YRenderTransformOrigin

XAML

<Button 
   Content="Button" 
   Height="100" 
   Width="100" 
   RenderTransformOrigin="0, 0"> 
          <Button.RenderTransform> 
                 <TransformGroup> 
                        <ScaleTransform/> 
                        <SkewTransform/> 
                        <RotateTransform Angle="90"/> 
                        <TranslateTransform/> 
                 </TransformGroup> 
          </Button.RenderTransform> 
   </Button
4

1 に答える 1

0

RenderTransformOrigin

MSDN によると、要素の境界を基準にして、System.Windows.UIElement.RenderTransform によって宣言された可能なレンダリング変換の中心点を取得または設定します。これは依存プロパティです。

したがって、確かに場所への影響はありません。場所に基づいて影響を受ける可能性がありますTranslateTransform

<TranslateTransform  X="{Binding LX}" Y="{Binding LY}" />


<Button Content="Hello" Width="100" Height="100" RenderTransformOrigin=".5,.5" BorderThickness="2" BorderBrush="Black">
    <Button.LayoutTransform>
        <TransformGroup>
            <ScaleTransform 
                            ScaleX="{Binding X}" 
                            ScaleY="{Binding Y}"/>
            <RotateTransform 
                            Angle="{Binding RotateAngle}"/>
        </TransformGroup>
    </Button.LayoutTransform>
</Button>

X と Y を 1 に設定X = Y = 1;します。つまり、ViewModel で

私は試しましたが、これは場所の変更に影響しませんRenderTransformOrigin

MSDN

RenderTransformOrigin は、Point が座標系の絶対位置を表していないという点で、Point 構造体値のやや非標準的な使用法を持っています。代わりに、0 と 1 の間の値は、各 x、y 軸の現在の要素の範囲の係数として解釈されます。たとえば、(0.5,0.5) を指定するとレンダリング トランスフォームが要素の中央に配置され、(1,1) を指定するとレンダリング トランスフォームが要素の右下隅に配置されます。NaN は受け入れられない値です。0 と 1 を超える値も受け入れられ、型破りな変換効果が得られます。たとえば、RenderTransformOrigin を (5,5) に設定してから RotateTransform を適用すると、回転ポイントは要素自体の境界のかなり外側になります。The transform will spin your element around in a big circle that originates beyond bottom right. The origin might be somewhere inside its parent element and could possibly be possibly out of frame or view.

負の点の値も同様で、左上の境界を超えます。 Render transforms do not affect layout, and are typically used to animate or apply a temporary effect to an element.

于 2015-08-20T13:27:27.537 に答える