RotateTransform Kelas

Definisi

Memutar objek di sekitar titik tertentu dalam sistem koordinat x-y dua dimensi.

public ref class RotateTransform sealed : Transform
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class RotateTransform final : Transform
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class RotateTransform final : Transform
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class RotateTransform : Transform
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class RotateTransform : Transform
Public NotInheritable Class RotateTransform
Inherits Transform
<RotateTransform .../>
Warisan
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Transformasi dapat mengubah tampilan teks di aplikasi Anda untuk membuat efek dekoratif. Contoh ini memperlihatkan teks yang diputar 90 derajat menggunakan RotateTransform.

Contoh ini menggunakan RotateTransform untuk memutar teks. Nilai Sudut 90 memutar elemen 90 derajat searah jarum jam.

<!-- Rotate the text 90 degrees using a RotateTransform. -->
<TextBlock Text="Rotated Text" FontSize="32" Foreground="Teal">
  <TextBlock.RenderTransform>
    <RotateTransform Angle="90" />
  </TextBlock.RenderTransform>
</TextBlock>

Keterangan

RotateTransform didefinisikan oleh Sudut yang memutar objek melalui busur di sekitar titik CenterX, CenterY.

Jika nilai Sudut yang diterapkan positif, rotasi yang diterapkan berada dalam arah searah jarum jam. Adalah legal untuk menggunakan nilai Sudut yang negatif, yang menyebabkan rotasi berlawanan arah jarum jam. Untuk nilai kurang dari –360 atau lebih besar dari 360, nilai dibungkus dan diperlakukan seolah-olah operasi mod(360) matematika diterapkan.

Untuk memutar di tempat, biarkan CenterX, CenterY sebagai default (0,0). Anda mungkin menggunakan CenterX nondefault, CenterY jika Anda tidak ingin memutar di tempat dan sebaliknya ingin memutar di sekitar titik dalam bingkai referensi transformasi. Misalnya, Anda dapat mensimulasikan orbit.

Transformasi biasanya digunakan untuk mengisi properti UIElement.RenderTransform, untuk mengubah cara elemen dirender. UIElement juga memiliki properti UIElement.RenderTransformOrigin , yang defaultnya adalah (0,0). RenderTransformOrigin menetapkan bingkai referensi koordinat tentang bagaimana semua transformasi termasuk RotateTransform akan berlaku. Skenario umum untuk RotateTransform adalah memutar objek di tempat di sekitar tengahnya (baik sebagai animasi atau sebagai transformasi satu kali). Dengan UIElement.RenderTransformOrigin default (0,0) objek tidak akan berputar di sekitar tengahnya, objek berputar di sekitar sudut kiri atas kotak pembatasnya. Oleh karena itu, cara umum untuk menyebabkan objek berputar di sekitar pusatnya adalah dengan membiarkan CenterX, CenterY sebagai (0,0) tetapi mengatur UIElement.RenderTransformOrigin menjadi Titik logis di mana nilainya (0,5,0,5). Menggunakan konvensi titik logis, yang menempatkan UIElement.RenderTransformOrigin di titik tengah objek, dengan kata lain di asal di mana (x,y) persis setengah dari nilai ActualHeight dan ActualWidth.

UIElement.RenderTransformOrigin menggunakan konvensi titik logis; CenterX dan CenterY tidak menggunakan konvensi tersebut, mereka menggunakan nilai piksel aktual.

Posisi penyajian untuk objek dapat diimbangi pada Kanvas menggunakan Canvas.Left dan Canvas.Top, tetapi ini tidak dihitung sebagai transformasi; objek mempertahankan asal lokalnya sendiri (0,0) ketika diposisikan di Kanvas.

Ada properti dan hubungan lain yang dapat memengaruhi bagaimana rotasi muncul. Jika ada beberapa transformasi yang diterapkan dengan menggunakan TransformGroup, urutannya penting. Transformasi diterapkan dalam urutan yang muncul di TransformCollection. Terutama jika salah satu transformasi adalah TranslateTransform, Anda mungkin harus mengubah urutan untuk mendapatkan efek rotasi yang Anda inginkan.

Ada tiga cara untuk menerapkan beberapa transformasi ke objek yang sama:

  • Menggunakan TransformGroup, tempat Anda dapat menentukan urutan penerapan setiap transformasi.
  • Menggunakan CompositeTransform, di mana setiap transformasi diaktifkan oleh properti objek Transformasi bersama dan transformasi diterapkan dalam urutan tetap yang diketahui.
  • Dengan menggunakan MatrixTransform, di mana Anda mengatur berbagai properti yang mengontrol matriks 3×3 s sehingga Anda menggabungkan klasifikasi umum transformasi menjadi satu Transformasi. Kecuali Anda menggunakan alat desain untuk membantu mengatur nilai, ini mungkin teknik yang paling canggih.

Menganimasikan RotateTransform

Anda dapat menerapkan animasi ke RotateTransform untuk menyebabkan elemen berputar dari waktu ke waktu. Biasanya Anda hanya menerapkan animasi ke properti Sudut , dan tidak menganimasikan CenterX, CenterY. Untuk animasi yang terus berputar, Biasanya Anda hanya menggunakan nilai Kepada untuk animasi gaya Dari/Ke/Menurut . Angle adalah Double sehingga ini melibatkan DoubleAnimation. Untuk animasi berkelanjutan, Anda akan mengatur RepeatBehavior dari DoubleAnimation ke Selamanya.

<Page.Resources>
  <Storyboard x:Name="spinrect">
     <DoubleAnimation To="360" RepeatBehavior="Forever" 
         Storyboard.TargetName="spinme"
         Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" />
  </Storyboard>
</Page.Resources>
<StackPanel>
  <Rectangle Name="spinme" Width="50" Height="50" Fill="Red" RenderTransformOrigin=".5,.5"
      PointerPressed="spinme_PointerPressed">
    <Rectangle.RenderTransform>
      <RotateTransform/>
    </Rectangle.RenderTransform>
  </Rectangle>
</StackPanel>
private void spinme_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    spinrect.Begin();
}

Konstruktor

RotateTransform()

Menginisialisasi instans baru dari kelas RotateTransform .

Properti

Angle

Mendapatkan atau mengatur sudut, dalam derajat, rotasi searah jarum jam.

AngleProperty

Mengidentifikasi properti dependensi Sudut .

CenterX

Mendapatkan atau mengatur koordinat x titik pusat rotasi untuk transformasi ini.

CenterXProperty

Mengidentifikasi properti dependensi CenterX .

CenterY

Mendapatkan atau mengatur koordinat y dari titik pusat rotasi untuk transformasi ini.

CenterYProperty

Mengidentifikasi properti dependensi CenterY .

Dispatcher

Mendapatkan CoreDispatcher yang dikaitkan dengan objek ini. CoreDispatcher mewakili fasilitas yang dapat mengakses DependencyObject pada utas UI bahkan jika kode dimulai oleh utas non-UI.

(Diperoleh dari DependencyObject)
Inverse

Mendapatkan transformasi terbalik dari GeneralTransform ini, jika memungkinkan.

(Diperoleh dari GeneralTransform)
InverseCore

Mengimplementasikan perilaku untuk nilai pengembalian Inverse dalam GeneralTransform turunan atau kustom.

(Diperoleh dari GeneralTransform)

Metode

ClearValue(DependencyProperty)

Menghapus nilai lokal properti dependensi.

(Diperoleh dari DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Mengembalikan nilai dasar apa pun yang ditetapkan untuk properti dependensi, yang akan berlaku dalam kasus di mana animasi tidak aktif.

(Diperoleh dari DependencyObject)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini dari DependencyObject.

(Diperoleh dari DependencyObject)
ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika nilai lokal ditetapkan.

(Diperoleh dari DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Mendaftarkan fungsi pemberitahuan untuk mendengarkan perubahan pada DependencyProperty tertentu pada instans DependencyObject ini.

(Diperoleh dari DependencyObject)
SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi pada DependencyObject.

(Diperoleh dari DependencyObject)
TransformBounds(Rect)

Mengubah kotak pembatas yang ditentukan dan mengembalikan kotak pembatas rata sumbu yang cukup besar untuk memuatnya.

(Diperoleh dari GeneralTransform)
TransformBoundsCore(Rect)

Menyediakan sarana untuk mengambil alih perilaku TransformBounds dalam kelas transformasi turunan.

(Diperoleh dari GeneralTransform)
TransformPoint(Point)

Menggunakan logika objek transformasi ini untuk mengubah titik yang ditentukan, dan mengembalikan hasilnya.

(Diperoleh dari GeneralTransform)
TryTransform(Point, Point)

Mencoba mengubah titik yang ditentukan dan mengembalikan nilai yang menunjukkan apakah transformasi berhasil.

(Diperoleh dari GeneralTransform)
TryTransformCore(Point, Point)

Menyediakan sarana untuk mengambil alih perilaku TryTransform di kelas transformasi turunan.

(Diperoleh dari GeneralTransform)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Membatalkan pemberitahuan perubahan yang sebelumnya terdaftar dengan memanggil RegisterPropertyChangedCallback.

(Diperoleh dari DependencyObject)

Berlaku untuk

Lihat juga