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.
Pelajari cara menggunakan umpan balik haptik dari perangkat pena untuk memberikan interaksi yang lebih alami dan taktil di aplikasi SDK Aplikasi Windows Anda.
Windows 11 memperkenalkan umpan balik haptik untuk pena digital, memungkinkan pengguna merasakan pena mereka berinteraksi dengan UI aplikasi. Saat merujuk ke fitur ini, haptic digunakan dalam API pengembang dan dokumentasi, sedangkan taktil adalah nama yang ditampilkan kepada pengguna di Pengaturan Windows.
API Utama
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (SDK Aplikasi Windows)
Jenis umpan balik haptik
Tersedia dua jenis umpan balik haptik:
- Umpan balik penintaan — Mensimulasikan nuansa alat tulis atau gambar (pena, penanda, pensil, penyorot) melalui getaran berkelanjutan saat pena menyentuh layar.
- Umpan balik interaksi — Sinyal taktil singkat untuk tindakan pengguna seperti mengarahkan mouse ke atas tombol, mengklik, atau mengonfirmasi tindakan yang telah selesai.
Mendeteksi input pena
Daftarkan untuk kejadian PointerEntered dan periksa apakah jenis perangkat penunjuk berupa pena:
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
Dapatkan PenDevice di SDK Aplikasi Windows
Di aplikasi SDK Aplikasi Windows, gunakan PenDeviceInterop — kelas interop SDK Aplikasi Windows — untuk mendapatkan objek WinRT PenDevice dari titik penunjuk.
PenDevice, SimpleHapticsController, dan KnownSimpleHapticsControllerWaveforms adalah jenis WinRT dari namespace Windows.Devices.Input dan Windows.Devices.Haptics; hanya panggilan interopnya sendiri yang berasal dari namespace Microsoft.UI.Input.Interop milik SDK Aplikasi Windows:
using Microsoft.UI.Input.Interop;
using Windows.Devices.Haptics;
using Windows.Devices.Input;
using Windows.Foundation.Metadata;
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
var penDevice = PenDeviceInterop.FromPointerPoint(e.GetCurrentPoint(null));
if (penDevice == null)
{
return; // Pen does not support advanced features.
}
// SimpleHapticsController requires Windows 11. Check for API presence
// before accessing it so the app doesn't throw on Windows 10.
if (!ApiInformation.IsPropertyPresent(
"Windows.Devices.Input.PenDevice", "SimpleHapticsController"))
{
return; // Haptic feedback requires Windows 11.
}
var hapticsController = penDevice.SimpleHapticsController;
if (hapticsController == null)
{
return; // Pen does not support haptic feedback.
}
// Configure haptic feedback (see examples below).
}
Nota
Di aplikasi UWP, gunakan PenDevice.GetFromPointerId sebagai gantinya. Kelas PenDeviceInterop ini khusus untuk SDK Aplikasi Windows.
Bentuk gelombang penintaan
Pola gelombang tinta ditampilkan secara terus-menerus saat pena menyentuh layar. Bentuk gelombang yang diperlukan dijamin didukung oleh pena haptik apa pun.
| Gelombang | Description | Diperlukan |
|---|---|---|
| InkContinuous | Nuansa pena titik bola default. Cadangan untuk bentuk gelombang yang tidak didukung. | Yes |
| SikatBerlanjut | Alat kuas | No |
| PensilBerlanjut | Alat pensil | No |
| MarkerContinuous | Alat penanda | No |
| ChiselMarkerContinuous | Penanda / penyorot pahat | No |
| PenghapusKontinu | Alat penghapus | No |
| GalaxyPenContinuous | Tinta khusus (kuas multi-warna) | No |
Bentuk gelombang interaksi
Bentuk gelombang interaksi memberikan umpan balik langsung singkat untuk tindakan UI.
| Gelombang | Description | Diperlukan |
|---|---|---|
| Click | Klik singkat bawaan. Fallback untuk interaksi yang tidak didukung. | Yes |
| Kesalahan | Tindakan gagal atau terjadi kesalahan | No |
| Arahkan | Mulai mengarahkan kursor ke elemen interaktif | No |
| Tekan | Menekan elemen interaktif | No |
| Lepaskan | Merilis elemen interaktif | No |
| Keberhasilan | Tindakan berhasil | No |
| BuzzContinuous | Dengungan terus-menerus | No |
| RumbleContinuous | Gemuruh berkelanjutan | No |
Kirim umpan balik haptik
Iterasi melalui SupportedFeedback untuk menemukan bentuk gelombang yang diinginkan, lalu panggil SendHapticFeedback:
SimpleHapticsControllerFeedback currentWaveform = null;
// Try to use BrushContinuous, fall back to InkContinuous.
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.BrushContinuous)
{
currentWaveform = waveform;
break;
}
}
if (currentWaveform == null)
{
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.InkContinuous)
{
currentWaveform = waveform;
break;
}
}
}
if (currentWaveform != null)
{
hapticsController.SendHapticFeedback(currentWaveform);
}
Matikan getaran
Selalu hentikan umpan balik haptik saat penunjuk keluar dari elemen . Daftarkan PointerExited pada elemen yang sama:
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Nota
Beberapa pena digital menonaktifkan haptik secara otomatis saat pena diangkat dari layar. Namun, tidak semua pena berfungsi seperti ini, jadi selalu panggil StopFeedback secara eksplisit.
Menyesuaikan umpan balik haptik
Beberapa pulpen memiliki opsi penyesuaian tambahan. Periksa dukungan sebelum menggunakannya:
| Harta benda | Periksa dukungan dengan |
|---|---|
| Intensitas | IsIntensitySupported |
| Jumlah pemutaran | IsPlayCountSupported |
| Durasi putar | IsPlayDurationSupported |
| Interval jeda pemutaran ulang | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
Artikel terkait
Windows developer