2015-10-12 56 views
1

的角度我有這樣的代碼:更改的UIElement

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

這臺我Image元素的Angle ..它的工作原理,但它並不像我預期的移動。

我只是想知道Angle是基於圖像的右側角落設置?那麼,它是否會將圖像從圖像的右側旋轉25度?

+0

所以難道你不能從結果中推導出它嗎?它由「角度」按順時針旋轉。 *它沒有像我期望的那樣移動太多* - >因此請嘗試增加角度。 –

+0

首先,'myImage.RenderTransform = transform;'這一行是多餘的,因爲您正在設置已經存在的變換的Angle屬性。默認情況下,旋轉是在左上角。爲了改變這種情況,你可以在相對座標中設置元素的'RenderTransformOrigin'(例如中心的(0.5,0.5)),或者你可以在絕對座標中設置RotateTransform的'CenterX'和'CenterY'屬性。 – Clemens

回答

2

順時針旋轉角度爲360度。這意味着25度將它移動到約1點的位置。如果你想指向右側,那將是90度。直下會是180度。

enter image description here

有意義嗎?看看這個:

enter image description here

下面是一些代碼,以幫助你測試:

<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在中間。

祝你好運!

相關問題