Menganimasikan elemen XAML dengan animasi komposisi
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 kelas *ThemeTransition dan *ThemeAnimation di namespace Windows.UI.Xaml.Media.Animation .
- gunakan animasi komposisi seperti 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 persyaratan untuk mendapatkan komposisi visual yang mendasar.
Catatan
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 adaptif versi.
Contoh
Galeri WinUI 2 | |
---|---|
![]() |
Jika Aplikasi Galeri WinUI 2 terinstal, klik di sini untuk membuka aplikasi dan lihat Interop Animasi sedang beraksi. |
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.
Properti | Tipe | Deskripsi |
---|---|---|
Keburaman | Laju | Tingkat keburaman objek |
Terjemahan | Vektor3 | Geser posisi X/Y/Z elemen |
TransformMatrix | Matriks4x4 | Matriks transformasi yang akan diterapkan ke elemen |
Sisik | Vektor3 | Menskalakan elemen, berpusat di CenterPoint |
Rotasi | Float | Memutar elemen di sekitar RotationAxis dan CenterPoint |
RotationAxis | 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 pass Measure/Arrange baru.
Properti ini memiliki tujuan dan perilaku yang sama dengan properti bernama seperti pada kelas Visual komposisi (kecuali untuk Terjemahan, 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
Catatan
Properti Opacity tidak memberlakukan eksklusivitas timbal balik 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:
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:
Penting
Mencoba mencampur penggunaan dua set properti akan menyebabkan panggilan API gagal dan menghasilkan pesan kesalahan.
Dimungkinkan untuk beralih dari satu set properti dengan menghapusnya, meskipun untuk kesederhanaan, 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 oleh ExpressionAnimation.
Gunakan metode StartAnimation dan StopAnimation pada UIElement untuk menganimasikan 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 menganimasikan menjadi dua kali lebih besar (melalui skala) sebagai 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk