Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows Uygulama SDK'sı uygulamanızda daha doğal ve dokunsal etkileşimler sağlamak için kalem cihazlarından gelen dokunsal geri bildirimleri kullanmayı öğrenin.
Windows 11 dijital kalemler için dokunsal geri bildirim sağlayarak kullanıcıların kalemlerinin uygulamanın kullanıcı arabirimiyle etkileşimde olduğunu hissetmelerini sağlar. Bu özellikten bahsederken, geliştirici API'lerinde ve belgelerde haptic kullanılırken, Windows Ayarları'nda gösterilen kullanıcıya dönük ad olarak dokunsal kullanılır.
Anahtar API'leri
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (Windows Uygulama SDK'sı)
Dokunsal geri bildirim türleri
İki tür dokunsal geri bildirim sağlanır:
- Mürekkep geri bildirimi — Kalem ekrana temas ederken sürekli titreşimlerle yazma veya çizim araçlarının (tükenmez kalem, keçeli kalem, kurşun kalem, fosforlu kalem) hissini simüle eder.
- Etkileşim geri bildirimi — Bir düğmenin üzerine gelme, tıklama veya tamamlanmış bir eylemi onaylama gibi kullanıcı eylemleri için kısa dokunsal sinyaller.
Kalem girişini algılama
Olaya kaydolun PointerEntered ve işaretçi cihaz türünün kalem olup olmadığını denetleyin:
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
Windows Uygulama SDK'sı'da PenDevice'i edinme
Windows Uygulama SDK'sı uygulamasında, bir işaretçi noktasından WinRT PenDeviceInterop nesnesini almak için bir Windows Uygulama SDK'sı birlikte çalışma sınıfı olan PenDevice öğesini kullanın.
PenDevice, SimpleHapticsController ve KnownSimpleHapticsControllerWaveforms, Windows.Devices.Input ve Windows.Devices.Haptics ad alanlarından gelen WinRT türleridir; yalnızca birlikte çalışma çağrısının kendisi Windows Uygulama SDK'sı’nin Microsoft.UI.Input.Interop ad alanından gelir:
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).
}
Uyarı
UWP uygulamalarında bunun yerine kullanın PenDevice.GetFromPointerId .
PenDeviceInterop sınıfı Windows Uygulama SDK'sı özgüdür.
Mürekkepleme dalga formları
Kalem ekranla temas halindeyken mürekkep dalga biçimleri sürekli olarak oynatılır. Gerekli dalga formlarının herhangi bir dokunsal kalem tarafından desteklenmesi garanti edilir.
| Dalga biçimi | Description | Gerekli |
|---|---|---|
| InkContinuous | Varsayılan top nokta kalem hissi. Desteklenmeyen dalga biçimleri için geri dönüş. | Yes |
| Sürekli Fırçalama | Fırça aracı | Hayır |
| KalemSürekli | Kalem aracı | Hayır |
| MarkerContinuous | İşaretleme aracı | Hayır |
| ChiselMarkerContinuous | Keski işaretçisi / vurgulayıcı | Hayır |
| EraserContinuous | Silgi aracı | Hayır |
| GalaxyPenContinuous | Özel mürekkep (çok renkli fırça) | Hayır |
Etkileşim dalga formları
Etkileşim dalga biçimleri, kullanıcı arabirimi eylemleri için kısa ve doğrudan geri bildirim sağlar.
| Dalga biçimi | Description | Gerekli |
|---|---|---|
| Tık | Varsayılan kısa tıklama. Desteklenmeyen etkileşimler için yedek çözüm. | Yes |
| Error | Eylem başarısız oldu veya hata oluştu | Hayır |
| Hover | Etkileşimli bir öğenin üzerine gelme başladı | Hayır |
| Basın | Etkileşimli bir öğeye basma | Hayır |
| Salıverme | Etkileşimli bir öğe yayımladı | Hayır |
| Success | Eylem başarılı oldu | Hayır |
| BuzzContinuous | Sürekli vızıltı | Hayır |
| RumbleContinuous | Sürekli gümbürtü | Hayır |
Dokunsal geri bildirim gönderme
İstenen dalga biçimini bulmak için SupportedFeedback üzerinde yineleme yapın, ardından SendHapticFeedback çağrısını yapın:
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);
}
Dokunsal geri bildirimi durdurun
İşaretçi öğeden çıktığında her zaman dokunsal geri bildirimi durdurun.
PointerExited için aynı öğe üzerinde kaydolun:
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Uyarı
Bazı kalemler, kalem ekrandan ayrıldığında dokunsal geri bildirimi otomatik olarak durdurur. Ancak, tüm kalemler bunu yapmaz, bu nedenle her zaman açıkça çağır StopFeedback .
Dokunsal geri bildirimleri özelleştirme
Bazı kalemler ek özelleştirmeleri destekler. Bunları kullanmadan önce desteği denetleyin:
| Mülkiyet | Desteği şununla kontrol edin |
|---|---|
| Yoğunluk | IsIntensitySupported |
| Oynatma sayısı | IsPlayCountSupported |
| Oynatma süresi | IsPlayDurationSupported |
| Duraklatma aralığını yeniden yürütme | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
İlgili makaleler
Windows developer