Bagikan melalui


Manipulasi Langsung

API Manipulasi Langsung memungkinkan Anda membuat pengalaman pengguna pan, zoom, dan seret yang hebat. Untuk melakukan ini, ia memproses input sentuh pada wilayah atau objek, menghasilkan transformasi output, dan menerapkan transformasi ke elemen UI. Anda dapat menggunakan Manipulasi Langsung untuk mengoptimalkan responsivitas dan mengurangi latensi melalui pemrosesan input off-thread, pengujian hit input off-thread opsional, dan prediksi input/output.

Aplikasi apa pun yang menggunakan Manipulasi Langsung untuk memproses interaksi sentuh menampilkan animasi Windows 8 cairan dan perilaku umpan balik interaksi yang sesuai dengan Panduan untuk interaksi pengguna umum.

Audiens Pengembang

API Manipulasi Langsung adalah untuk pengembang berpengalaman yang mengenal C/C++, memiliki pemahaman yang kuat tentang Model Objek Komponen (COM), dan terbiasa dengan konsep pemrograman Windows.

Persyaratan waktu proses

Manipulasi Langsung diperkenalkan di Windows 8. Ini termasuk dalam versi 32-bit dan 64-bit.

Mengapa menggunakan DirectManipulation

Menangani interaksi dengan cara yang mudah dan konsisten

Manipulasi Langsung bekerja dengan mendeklarasikan perilaku dan interaksi sebelumnya untuk suatu wilayah atau objek. Misalnya, halaman web sering dikonfigurasi untuk pan dan zoom. Pada runtime, input kemudian dikaitkan dengan wilayah/objek ini melalui panggilan API sederhana. Dari titik ini ke depan Manipulasi Langsung melakukan semua pengangkatan berat pemrosesan input, menerapkan batasan dan kepribadian, dan menghasilkan transformasi output.

Membangun aplikasi sentuhan responsif

Untuk mengoptimalkan responsivitas dan meminimalkan latensi, pemrosesan Manipulasi Langsung terjadi pada utas independen terpisah dari utas UI. Akibatnya, transformasi output dapat berjalan secara paralel dengan aktivitas pada utas UI. Aktivitas utas UI dapat mencakup logika aplikasi, penyajian, tata letak, dan hal lain yang mengonsumsi siklus pada prosesor.

Fleksibilitas implementasi

Antarmuka yang disertakan dengan Manipulasi Langsung memberikan dukungan komprehensif untuk penanganan input, pengenalan interaksi, pemberitahuan umpan balik, dan pembaruan UI. Antarmuka juga menggabungkan layanan sistem seperti DirectComposition.

Konsep dasar

Implementasi Manipulasi Langsung yang paling mendasar terdiri dari viewport, konten, dan interaksi. Viewport adalah wilayah yang dapat menerima dan memproses input dari interaksi pengguna. Ini juga merupakan wilayah konten yang terlihat oleh pengguna akhir. Konten adalah objek aktual yang dapat dilihat pengguna akhir dan adalah apa yang bergerak atau diskalakan sebagai respons terhadap interaksi pengguna. Interaksi pengguna utama (juga dikenal sebagai manipulasi) yang didukung oleh Manipulasi Langsung adalah panning dan zooming. Interaksi ini menerapkan transformasi terjemahan atau skala ke konten dalam viewport. Beberapa viewports (masing-masing dengan kontennya sendiri) dapat dikonfigurasi dalam satu jendela untuk membuat pengalaman UI yang kaya.

Angka ini menunjukkan implementasi Manipulasi Langsung dasar sebelum dan sesudah panning.

implementasi manipulasi langsung dasar sebelum dan sesudah panning.

Selama inisialisasi Manipulasi Langsung, objek DCompDirectManipulationCompositor dibuat dan dikaitkan dengan Manipulasi Langsung. Objek ini adalah pembungkus di sekitar DirectComposition, yang merupakan komposit sistem. Objek bertanggung jawab untuk menerapkan transformasi output dan mendorong pembaruan visual.

Kontak mewakili titik sentuh yang diidentifikasi oleh pointerId yang disediakan dalam pesan WM/_POINTERDOWN . Ketika pesan WM_POINTERDOWN diterima, aplikasi memanggil SetContact. Aplikasi ini memberi tahu Manipulasi Langsung tentang kontak yang harus ditangani dan viewport yang harus bereaksi terhadap kontak tersebut. Input keyboard dan mouse memiliki nilai pointerId khusus sehingga dapat ditangani dengan tepat oleh Manipulasi Langsung.

Dalam kasus dasar kami di atas, ketika SetContact disebut beberapa hal terjadi:

  • Ketika pengguna melakukan pan, pesan WM/_POINTERCAPTURECHANGED dikirim ke aplikasi untuk memberi tahu bahwa kontak telah dikonsumsi oleh Manipulasi Langsung.
  • Saat pengguna memindahkan pemindahan, viewport akan mengaktifkan peristiwa pembaruan yang digunakan oleh pembungkus DirectComposition untuk mendorong pembaruan visual ke layar. Untuk pengguna yang menenggelamkan di viewport, konten akan tampak bergerak dengan lancar di bawah kontak.
  • Ketika pengguna mengangkat kontak, pengguna melihat konten terus bergerak saat beralih ke animasi inertia, secara bertahap menurun hingga mencapai tempat istirahat terakhirnya.

Memproses keyboard dan input mouse

Manipulasi Langsung memungkinkan pesan keyboard dan mouse diteruskan secara manual dari utas UI aplikasi melalui API ProcessInput sehingga dapat ditangani dengan tepat oleh Manipulasi Langsung.

DirectManipulation dan HWND

Manipulasi Langsung dikaitkan dengan Win32 HWND untuk menerima dan memproses pesan input pointer untuk jendela tersebut. Karena Manipulasi Langsung menghitung nilai output, itu membuat panggilan balik asinkron ke objek Direct Manipulation Component Object Model (COM) yang diimplementasikan dalam aplikasi. Panggilan balik ini menginformasikan aplikasi tentang transformasi yang diterapkan ke objek. Manipulasi Langsung diaktifkan pada HWND yang ditentukan dengan memanggil Aktifkan.

Dokumentasi pendukung