Kliping (DirectComposition)

Catatan

Untuk aplikasi di Windows 10, sebaiknya gunakan WINDOWS.UI.Composition API alih-alih DirectComposition. Untuk informasi selengkapnya, lihat Memodernisasi aplikasi desktop Anda menggunakan lapisan Visual.

Kliping menyediakan cara untuk mengungkapkan hanya sebagian dari visual atau pohon visual dengan membatasi penyajian visual atau pohon ke area persegi panjang tertentu. Topik ini menjelaskan dukungan Microsoft DirectComposition untuk mengklip visual. Ini termasuk bagian berikut:

Persegi panjang klip

Objek visual memiliki properti Klip yang menentukan wilayah persegi panjang, atau persegi panjang klip, di dalam konten bitmap visual. Saat visual dirender ke layar, hanya bagian konten bitmap yang ada di dalam persegi panjang klip yang digambar di layar, sementara konten yang meluas di luar persegi klip dipotong (tidak digambar). Secara default, properti Klip menyertakan semua konten bitmap.

Properti Klip visual berlaku untuk semua visual turunan dan turunan. Dengan kata lain, konten turunan atau anak apa pun yang berada di luar batas persegi panjang klip induk juga dipotong.

DirectComposition menerapkan properti Klip sebelum menerapkan properti OffsetX, OffsetY, dan Transformasi 2D, tetapi setelah menerapkan properti Efek dan Transformasi 3D. Ini berarti bahwa Transformasi 2D, OffsetX, dan OffsetY, akan memengaruhi konten visual, dan persegi panjang klip. Sedangkan transformasi dan efek 3D tidak akan berlaku untuk persegi klip.

Misalnya, saat menerapkan transformasi offset atau 2D, persegi panjang klip dipengaruhi oleh matriks transformasi. Jadi menambahkan offset dan putar 2D (45 derajat) bersama dengan persegi panjang klip sudut bulat akan menghasilkan hal ini:

diagram memperlihatkan efek transformasi 2d pada persegi klip.

Saat menerapkan transformasi 3D "di dalam" persegi klip, persegi panjang klip tidak terpengaruh oleh matriks transformasi. Bahkan saat menerapkan rotasi di sekitar sumbu Z (secara efektif sama dengan contoh sebelumnya), diagram berikut adalah hasilnya:

diagram memperlihatkan bahwa transformasi 3d tidak memengaruhi klip persegi panjang (visual berputar di dalam klip).

Perhatikan bahwa visual diputar dalam klip karena matriks 3D tidak diterapkan ke klip itu sendiri.

Jika properti Klip diatur ke persegi panjang kosong, visual sepenuhnya terpotong; artinya, visual disertakan dalam pohon visual, tetapi tidak merender apa pun. Jika Anda tidak ingin menyertakan visual tertentu dalam komposisi, hapus visual dari pohon visual alih-alih mengatur persegi klip kosong. Menghapus hasil visual dalam performa yang lebih baik.

Anda mengatur properti Klip visual dengan menggunakan metode IDCompositionVisual::SetClip . Metode ini mencakup kelebihan beban yang memungkinkan Anda mengatur nilai properti Klip ke persegi statis atau ke objek klip. Gunakan persegi statis jika Anda tidak perlu mengubah dimensi persegi panjang klip selama masa pakai visual. Jika Anda perlu mengubah dimensi atau menganimasikan persegi klip, gunakan objek klip.

Objek klip

Objek klip adalah objek Model Objek Komponen (COM) yang mewakili persegi klip. Anda membuat objek klip dengan menggunakan metode IDCompositionDevice::CreateRectangleClip , lalu menggunakan antarmuka IDCompositionRectangleClip objek untuk mengatur properti objek. Objek klip yang baru dibuat memiliki nilai minimum yang mungkin untuk properti Kiri dan Atas, dan nilai maksimum yang mungkin untuk properti Kanan dan Bawah, secara efektif menjadikannya objek klip tanpa operasi. Dengan kata lain, objek mewakili persegi panjang klip yang akan menyertakan seluruh konten bitmap visual.

Objek klip menyertakan sekumpulan properti yang memungkinkan Anda menentukan sudut bulat untuk objek klip. Properti memungkinkan Anda mengatur radius x dan radius y dari setiap sudut objek kliping.

Persegi panjang klip animasi

Anda dapat menganimasikan persegi klip dengan menerapkan objek animasi ke properti Kiri, Atas, Kanan, dan Bawah objek klip. Gunakan metode kelebihan beban IDCompositionVisual::SetClip(IDCompositionClip) untuk menerapkan persegi klip animasi ke properti Klip visual.

Untuk informasi selengkapnya tentang objek animasi, lihat Animasi.

Konsep DirectComposition

Cara Klip dengan Objek Klip Persegi Panjang