2011-02-27 137 views
0

如何在RenderTransformOrigin屬性更改時使旋轉對象靜止不動?在運行下面的代碼後,您可以通過旋轉對象(滑塊可以實現這一點),更改旋轉原點(按鈕)並再次旋轉它,以確定對象稍微移動。我試圖實現的是能夠旋轉對象的不同點,而不必在我嘗試在它們之間切換時四處移動。更改旋轉對象的RenderTransformOrigin屬性

<UserControl x:Class="ObjrctRotation.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="400"> 

<Canvas x:Name="C" Background="White"> 
    <Path x:Name="thing" RenderTransformOrigin="0,0" Stretch="Fill" Stroke="Black" StrokeThickness="2" Height="93.153" HorizontalAlignment="Left" VerticalAlignment="Top" Width="106.357" UseLayoutRounding="False" Data="M48.723255,124.82815 C41.00029,80.999809 81.000046,65.000069 112.99985,89.000092 C144.99965,113.00011 168.9996,169.00061 136.99989,169.0002 C105.00018,168.99979 104.9999,145.00015 81.000053,145.00015 C57.000206,145.00015 56.44622,168.65649 48.723255,124.82815 z" Canvas.Left="69" Canvas.Top="24" /> 
    <Slider Value="0" Minimum="0" Maximum="360" Width="100" Margin="300,0,0,272" ValueChanged="Slider_ValueChanged" /> 
    <TextBlock x:Name="test" Width="100" Height="20" Canvas.Left="300" Canvas.Top="24" /> 
    <Button Canvas.Left="300" Canvas.Top="24" Content="ChangeCenter" Height="20" Name="button1" Width="100" Click="button1_Click"/> 
</Canvas> 

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 
    private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     RotateTransform rotate = new RotateTransform() 
     { 
      Angle=e.NewValue 
     };   

     thing.RenderTransform = rotate; 
    } 
    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     thing.RenderTransformOrigin = new Point(thing.RenderTransformOrigin.X + 0.2, thing.RenderTransformOrigin.Y + 0.2); 
    } 
} 

回答

0

設置RenderTransformOrigin = 「0,0」,以RenderTransformOrigin = 「0.5,0.5」,使轉換原點是要旋轉對象的中間。

+0

建議您在xaml中更改它?如果是這樣,它不會真的有幫助,因爲它會在用戶旋轉對象並更改它的rendertransformorigin時更改。 – Arsonic 2011-02-28 08:47:53

+0

我認爲羅斯的意思是這個,thing.RenderTransformOrigin = new Point(.5,.5); – 2011-04-14 06:08:05