Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperkenalkan properti baru yang memungkinkan Anda menganimasikan XAML UIElement dengan performa animasi komposisi dan kemudahan pengaturan properti XAML.
Sebelum Windows 10, versi 1809, Anda memiliki 2 pilihan untuk membangun animasi di aplikasi UWP Anda:
- gunakan konstruksi XAML seperti animasi Storyboarded, atau *ThemeTransition dan *Kelas ThemeAnimation di namespace Windows.UI.Xaml.Media.Animation.
- gunakan animasi komposisi sesuai dengan yang dijelaskan dalam Menggunakan Lapisan Visual dengan XAML.
Menggunakan lapisan visual memberikan performa yang lebih baik daripada menggunakan konstruksi XAML. Tetapi menggunakan ElementCompositionPreview untuk mendapatkan objek Visual komposisi dasar elemen, dan kemudian menganimasikan Visual dengan animasi komposisi, lebih kompleks untuk digunakan.
Mulai dari Windows 10, versi 1809, Anda dapat menganimasikan properti pada UIElement secara langsung menggunakan animasi komposisi tanpa harus mendapatkan Visual komposisi yang mendasar.
Nota
Untuk menggunakan properti ini pada UIElement, versi target proyek UWP Anda harus 1809 atau yang lebih baru. Untuk informasi selengkapnya tentang mengonfigurasi versi proyek Anda, lihat Aplikasi yang adaptif terhadap versi.
Contoh
Galeri WinUI 2 | |
---|---|
Jika Aplikasi Galeri WinUI 2 |
Properti penyajian baru menggantikan properti penyajian lama
Tabel ini memperlihatkan properti yang dapat Anda gunakan untuk memodifikasi penyajian UIElement, yang juga dapat dianimasikan dengan CompositionAnimation.
Harta benda | Tipe | Deskripsi |
---|---|---|
Opasitas | Dobel | Tingkat keburaman objek |
Terjemahan | Vektor3 | Geser posisi X/Y/Z elemen |
TransformMatrix | Matriks4x4 | Matriks transformasi yang akan diterapkan ke elemen |
Skala | Vektor3 | Mengubah skala elemen, berpusat pada titik pusat |
Rotasi | Mengapung | Memutar elemen di sekitar RotationAxis dan CenterPoint |
|
Vektor3 | Sumbu rotasi |
Titik Tengah | Vektor3 | Titik tengah skala dan rotasi |
Nilai properti TransformMatrix dikombinasikan dengan properti Skala, Rotasi, dan Terjemahan dalam urutan berikut: TransformMatrix, Scale, Rotation, Translation.
Properti ini tidak memengaruhi tata letak elemen, sehingga memodifikasi properti ini tidak menyebabkan Mengukur/Menyusun pass baru.
Properti ini memiliki tujuan dan perilaku yang sama dengan properti yang bernama sama dengan pada komposisi kelas Visual (kecuali Translasi yang tidak ada di Visual).
Contoh: Mengatur properti Skala
Contoh ini menunjukkan cara mengatur properti Skala pada Tombol.
<Button Scale="2,2,1" Content="I am a large button" />
var button = new Button();
button.Content = "I am a large button";
button.Scale = new Vector3(2.0f,2.0f,1.0f);
Eksklusivitas timbal balik antara properti baru dan lama
Nota
Properti Opacity tidak memberlakukan sifat saling eksklusif yang dijelaskan di bagian ini. Anda menggunakan properti Opacity yang sama apakah Anda menggunakan XAML atau animasi komposisi.
Properti yang dapat dianimasikan dengan CompositionAnimation adalah pengganti untuk beberapa properti UIElement yang ada:
-
RenderTransform - RenderTransformOrigin
- Proyeksi
- Transform3D
Saat Anda mengatur (atau menganimasikan) salah satu properti baru, Anda tidak dapat menggunakan properti lama. Sebaliknya, jika Anda mengatur (atau menganimasikan) salah satu properti lama, Anda tidak dapat menggunakan properti baru.
Anda juga tidak dapat menggunakan properti baru jika Anda menggunakan ElementCompositionPreview untuk mendapatkan dan mengelola Visual sendiri menggunakan metode ini:
- ElementCompositionPreview.GetElementVisual
- ElementCompositionPreview.SetIsTranslationEnabled (Aktifkan Terjemahan)
Penting
Mencoba mencampur penggunaan dua set properti akan menyebabkan panggilan API gagal dan menghasilkan pesan kesalahan.
Memungkinkan untuk beralih dari satu set properti dengan menghapusnya; namun, demi menjaga kesederhanaan, hal ini tidak disarankan. Jika properti didukung oleh DependencyProperty (misalnya, UIElement.Projection didukung oleh UIElement.ProjectionProperty), maka panggil ClearValue untuk memulihkannya ke status "tidak digunakan". Jika tidak (misalnya, properti Skala), atur properti ke nilai defaultnya.
Menganimasikan properti UIElement dengan CompositionAnimation
Anda dapat menganimasikan properti penyajian yang tercantum dalam tabel dengan CompositionAnimation. Properti ini juga dapat direferensikan olehExpressionAnimation
Gunakan metode StartAnimation dan StopAnimation pada UIElement untuk mengubah properti UIElement.
Contoh: Menganimasikan properti Skala dengan Vector3KeyFrameAnimation
Contoh ini menunjukkan cara menganimasikan skala Tombol.
var compositor = Window.Current.Compositor;
var animation = compositor.CreateVector3KeyFrameAnimation();
animation.InsertKeyFrame(1.0f, new Vector3(2.0f,2.0f,1.0f));
animation.Duration = TimeSpan.FromSeconds(1);
animation.Target = "Scale";
button.StartAnimation(animation);
Contoh: Menganimasikan properti Skala dengan ExpressionAnimation
Halaman memiliki dua tombol. Tombol kedua dianimasikan menjadi dua kali lebih besar (melalui skala) daripada tombol pertama.
<Button x:Name="sourceButton" Content="Source"/>
<Button x:Name="destinationButton" Content="Destination"/>
var compositor = Window.Current.Compositor;
var animation = compositor.CreateExpressionAnimation("sourceButton.Scale*2");
animation.SetExpressionReferenceParameter("sourceButton", sourceButton);
animation.Target = "Scale";
destinationButton.StartAnimation(animation);
Topik terkait
Windows developer