2

私はこのコードを持っています:

RotateTransform transform = myImage.RenderTransform as RotateTransform;
transform.Angle = 25.0;
myImage.RenderTransform = transform;

これAngleは私のImage要素の を設定します..動作しますが、期待したほど動きません。

Angleが画像の右隅に基づいて設定されているかどうか疑問に思っていましたか? では、画像を右側から 25 度回転させますか?

4

1 に答える 1

3

回転角度は360時計回りです。これは25、実際に言えば、1 度前後に移動することを意味します。右を指す場合は、90 度になります。真下は180度になります。

ここに画像の説明を入力

わかる?これを見てください:

ここに画像の説明を入力

テストに役立つコードを次に示します。

<StackPanel Width="200" Margin="0,50">
    <Grid Width="100" Height="100" Background="SteelBlue" RenderTransformOrigin=".5,.5">
        <UIElement.RenderTransform>
            <RotateTransform Angle="{Binding Value, ElementName=MySlider}" />
        </UIElement.RenderTransform>
        <Line HorizontalAlignment="Center" VerticalAlignment="Top"
                Stroke="Goldenrod" StrokeThickness="4"
                X1="2" X2="2"
                Y1="0" Y2="40" />
        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White">
            <Run Text="{Binding Value, ElementName=MySlider}" />
            <Run Text="degrees" />
        </TextBlock>
    </Grid>
    <Slider x:Name="MySlider" Maximum="360" Minimum="0" Value="25" />
</StackPanel>

その点に注意してくださいRenderTransformOrigin=".5,.5"。回転軸がどこにあるかを決定するため、これは非常に重要です。値は 0 から 1 です。0,0基本的には上/左、1,1下/右です。それは.5,.5真ん中でピシャリと鳴ります。

頑張ってください!

于 2015-10-13T00:13:34.137 に答える