Share via


UIElement.RenderTransformOrigin Properti

Definisi

Mendapatkan atau mengatur titik tengah dari setiap kemungkinan transformasi render yang dideklarasikan oleh RenderTransform, relatif terhadap batas elemen. Ini adalah properti dependensi.

public:
 property System::Windows::Point RenderTransformOrigin { System::Windows::Point get(); void set(System::Windows::Point value); };
public System.Windows.Point RenderTransformOrigin { get; set; }
member this.RenderTransformOrigin : System.Windows.Point with get, set
Public Property RenderTransformOrigin As Point

Nilai Properti

Nilai yang mendeklarasikan transformasi render. Nilai default adalah dengan koordinat Point (0,0).

Contoh

Contoh berikut menyusun elemen dalam kode, menerapkan RenderTransformOrigin, lalu menerapkan RenderTransform.

public RotateAboutCenterExample()
{
    this.WindowTitle = "Rotate About Center Example";
    NameScope.SetNameScope(this, new NameScope());
    StackPanel myStackPanel = new StackPanel();
    myStackPanel.Margin = new Thickness(50);

    Button myButton = new Button();
    myButton.Name = "myRenderTransformButton";
    this.RegisterName(myButton.Name,myButton);
    myButton.RenderTransformOrigin = new Point(0.5,0.5);
    myButton.HorizontalAlignment = HorizontalAlignment.Left;
    myButton.Content = "Hello World";

    RotateTransform myRotateTransform = new RotateTransform(0);
    myButton.RenderTransform = myRotateTransform;
    this.RegisterName("MyAnimatedTransform",myRotateTransform);

    myStackPanel.Children.Add(myButton);

    //
    // Creates an animation that accelerates through 40% of its duration and
    //      decelerates through the 60% of its duration.
    //
    DoubleAnimation myRotateAboutCenterAnimation = new DoubleAnimation();
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform");
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,new PropertyPath(RotateTransform.AngleProperty));
    myRotateAboutCenterAnimation.From = 0.0;
    myRotateAboutCenterAnimation.To = 360;
    myRotateAboutCenterAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));

    // Create a Storyboard to contain the animations and
    // add the animations to the Storyboard.
    Storyboard myStoryboard = new Storyboard();
    myStoryboard.Children.Add(myRotateAboutCenterAnimation);

    // Create an EventTrigger and a BeginStoryboard action to
    // start the storyboard.
    EventTrigger myEventTrigger = new EventTrigger();
    myEventTrigger.RoutedEvent = Button.ClickEvent;
    myEventTrigger.SourceName = myButton.Name;
    BeginStoryboard myBeginStoryboard = new BeginStoryboard();
    myBeginStoryboard.Storyboard = myStoryboard;
    myEventTrigger.Actions.Add(myBeginStoryboard);
    myStackPanel.Triggers.Add(myEventTrigger);

    this.Content = myStackPanel;
}
Public Sub New()
    Me.WindowTitle = "Rotate About Center Example"
    NameScope.SetNameScope(Me, New NameScope())
    Dim myStackPanel As New StackPanel()
    myStackPanel.Margin = New Thickness(50)

    Dim myButton As New Button()
    myButton.Name = "myRenderTransformButton"
    Me.RegisterName(myButton.Name,myButton)
    myButton.RenderTransformOrigin = New Point(0.5,0.5)
    myButton.HorizontalAlignment = HorizontalAlignment.Left
    myButton.Content = "Hello World"


    Dim myRotateTransform As New RotateTransform(0)
    myButton.RenderTransform = myRotateTransform
    Me.RegisterName("MyAnimatedTransform",myRotateTransform)

    myStackPanel.Children.Add(myButton)

    '
    ' Creates an animation that accelerates through 40% of its duration and
    '      decelerates through the 60% of its duration.
    '
    Dim myRotateAboutCenterAnimation As New DoubleAnimation()
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform")
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,New PropertyPath(RotateTransform.AngleProperty))
    myRotateAboutCenterAnimation.From = 0.0
    myRotateAboutCenterAnimation.To = 360
    myRotateAboutCenterAnimation.Duration = New Duration(TimeSpan.FromMilliseconds(1000))

    ' Create a Storyboard to contain the animations and
    ' add the animations to the Storyboard.
    Dim myStoryboard As New Storyboard()
    myStoryboard.Children.Add(myRotateAboutCenterAnimation)

    ' Create an EventTrigger and a BeginStoryboard action to
    ' start the storyboard.
    Dim myEventTrigger As New EventTrigger()
    myEventTrigger.RoutedEvent = Button.ClickEvent
    myEventTrigger.SourceName = myButton.Name
    Dim myBeginStoryboard As New BeginStoryboard()
    myBeginStoryboard.Storyboard = myStoryboard
    myEventTrigger.Actions.Add(myBeginStoryboard)
    myStackPanel.Triggers.Add(myEventTrigger)

    Me.Content = myStackPanel
End Sub

Keterangan

RenderTransformOrigin memiliki penggunaan Point nilai struktur yang Point agak tidak biasa, karena tidak mewakili lokasi absolut dalam sistem koordinat. Sebaliknya, nilai antara 0 dan 1 ditafsirkan sebagai faktor untuk rentang elemen saat ini di setiap sumbu x,y. Misalnya, (0,5,0,5) akan menyebabkan transformasi render berpusat pada elemen, atau (1,1) akan menempatkan transformasi render di sudut kanan bawah elemen. NaN bukan nilai yang diterima.

Nilai di luar 0 dan 1 juga diterima, dan akan menghasilkan efek transformasi yang lebih tidak konvensional. Misalnya, jika Anda mengatur RenderTransformOrigin menjadi (5,5), dan kemudian menerapkan RotateTransform, titik rotasi akan berada di luar batas elemen itu sendiri. Transformasi akan memutar elemen Anda dalam lingkaran besar yang berasal dari luar kanan bawah. Asalnya mungkin berada di suatu tempat di dalam elemen induknya dan mungkin mungkin di luar bingkai atau tampilan. Nilai poin negatif serupa, ini akan melampaui batas kiri atas.

Merender transformasi tidak memengaruhi tata letak, dan biasanya digunakan untuk menganimasikan atau menerapkan efek sementara pada elemen.

Penggunaan Atribut XAML

<object RenderTransformOrigin="xOrigin, yOrigin"/>  

Penggunaan Elemen Properti XAML

<object>  
  <object.RenderTransformOrigin>  
    <Point X=" xOrigin " Y=" yOrigin "/>  
  </object.RenderTransformOrigin>  
</object>  

Nilai XAML

xOrigin
Faktor asal horizontal. Ini biasanya diberikan sebagai nilai antara 0 dan 1. Lihat Keterangan.

yOrigin
Faktor asal vertikal. Ini biasanya diberikan sebagai nilai antara 0 dan 1. Lihat Keterangan.

Informasi Properti Dependensi

Bidang pengidentifikasi RenderTransformOriginProperty
Properti metadata diatur ke true Tidak ada

Berlaku untuk

Lihat juga