6

内部にいくつかの詳細がある長方形であるカスタムビルドコントロールがありますが、それは長方形です。

私は中心点 (X,Y) を持っています。これを「重心」と呼び、点を「表します」。これは、オブジェクトに新しい位置を設定するときに、この点が設定された位置にあることを意味します。オブジェクトを回転させるときは、この点を中心に回転させる必要があります。そして、オブジェクトをスケーリングするとき、ポイントは以前に設定した位置にとどまる必要があります。オブジェクトのサイズのみを変更する必要があります。

たとえば、問題を簡単に理解するために、10X10 の正方形があるとします。重心を正方形の正確な中心 (5,5) に設定しました。次に、オブジェクトの位置を (100, 100) に設定します。次に、正方形は次のようになります。

(95,95)、(105,95)、(105,105)、(95,105)。これは、その中心が目的の位置にあることを意味します。

値 2 で正方形をスケーリングする場合、新しい 4 ポイントの位置は次のようになります。

(90,90)、(110,90)、(110,110)、(90,110) は、その中心が目的の位置に留まることを意味します。

45 度回転すると、中心を中心に次の位置で回転します。

(92.93,92.93),(107.07,92.93),(107.07,107.07),(92.93,107.07)

その中心が完全に構成可能であり、このすべての変換が WPF のプログラムに対して透過的であるため、これを行うにはどうすればよいでしょうか? Scale、Position、Rotation Angle、center のみを設定して、適切に描画したいと思います。

ありがとうございました!

4

2 に答える 2

11

オブジェクトのサイズを基準にして、変換の中心点を設定できます。オブジェクトの左上隅を中心に回転する場合、値はになります0, 0。右下を10%超えた位置を中心に回転するには、を使用します1.1, 1.1

プロパティはRenderTransformOriginRotationTranformsに対して呼び出されます。Blendでは、プロパティに「Transform」グループがあります。展開すると、RenderTransformには一連のタブがあります。5つ目はセンターポイントです。

XAMLの例を次に示します。

<TextBlock Text="TextBlock" RenderTransformOrigin="-0.5,-0.5" Background="#FFA1BBF9" Margin="50" Width="100" Height="100">
    <TextBlock.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="2"/>
            <SkewTransform/>
            <RotateTransform Angle="30"/>
            <TranslateTransform/>
         </TransformGroup>
     </TextBlock.RenderTransform>
</TextBlock>
于 2012-05-29T00:06:54.623 に答える