Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Leer hoe u haptische feedback van penapparaten kunt gebruiken om natuurlijkere en tactiele interacties te bieden in uw Windows App SDK-app.
Windows 11 haptische feedback voor digitale pennen geïntroduceerd, zodat gebruikers kunnen voelen dat hun pen communiceert met de gebruikersinterface van de app. Wanneer u naar deze functie verwijst, wordt haptic gebruikt in api's en documentatie voor ontwikkelaars, terwijl tactile de gebruikersnaam is die wordt weergegeven in Windows Instellingen.
Sleutel-API's
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (Windows App SDK)
Haptische feedbacktypen
Er zijn twee soorten haptische feedback beschikbaar:
- Inktfeedback : simuleert het gevoel van schrijven of tekenen (pen, markering, potlood, markeerstift) door continue trillingen terwijl de pen het scherm raakt.
- Interactiefeedback — Korte tactiele signalen voor gebruikersacties, zoals met de aanwijzer over een knop bewegen, klikken of het bevestigen van een voltooide actie.
Peninvoer detecteren
Registreer u voor de gebeurtenis en controleer of het apparaattype van de PointerEntered aanwijzer een pen is:
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
De PenDevice ophalen in de Windows App SDK
Gebruik PenDeviceInterop in een Windows App SDK-app ( een Windows App SDK interop-klasse ) om het WinRT-object PenDevice op te halen vanaf een aanwijzerpunt.
PenDevice, SimpleHapticsControlleren KnownSimpleHapticsControllerWaveforms zijn WinRT-typen uit de Windows.Devices.Input en Windows.Devices.Haptics naamruimten; alleen de interop-aanroep zelf komt uit de naamruimte van Microsoft.UI.Input.Interop de Windows App SDK:
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).
}
Opmerking
Gebruik in plaats daarvan in UWP-apps PenDevice.GetFromPointerId . De PenDeviceInterop klasse is specifiek voor de Windows App SDK.
Inktgolfvormen
Inktgolfvormen spelen continu af terwijl de pen het scherm bereikt. De vereiste golfvormen worden gegarandeerd ondersteund door elke haptische pen.
| Golfvorm | Description | Verplicht |
|---|---|---|
| Continue-inkt | Standaard balpengevoel. Reserveoptie voor niet-ondersteunde golfvormen. | Yes |
| Doorlopende penseel | Penseelgereedschap | No |
| PotloodContinu | Potloodgereedschap | No |
| MarkerContinuous | Markeringsgereedschap | No |
| ChiselMarkerContinuous | Beitelmarkering/markeerstift | No |
| GumContinuous | Gummetje | No |
| GalaxyPenContinuous | Speciale inkt (veelkleurig penseel) | No |
Interactiegolfvormen
Interactiegolfvormen bieden korte, directe feedback voor UI-acties.
| Golfvorm | Description | Verplicht |
|---|---|---|
| Klik | Standaard korte klik. Reserveoplossing voor niet-ondersteunde interacties. | Yes |
| Fout | De actie is mislukt of er is een fout opgetreden | No |
| Zweven | Begon de muisaanwijzer boven een interactief element te houden | No |
| Druk | Op een interactief element gedrukt | No |
| Vrijgeven | Een interactief element uitgebracht | No |
| Success | De actie is voltooid | No |
| BuzzContinuous | Doorlopende buzzing | No |
| RumbleContinuous | Doorlopend gerommel | No |
Haptische feedback verzenden
Doorloop SupportedFeedback om de gewenste golfvorm te vinden en roep SendHapticFeedbackvervolgens het volgende aan:
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);
}
Haptische feedback stoppen
Stop altijd haptische feedback wanneer de aanwijzer het element verlaat. Meld u aan voor PointerExited op hetzelfde element:
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Opmerking
Sommige pennen stoppen haptiek automatisch wanneer de pen het scherm verlaat. Niet alle pennen doen dit echter, dus roep StopFeedback altijd expliciet aan.
Haptische feedback aanpassen
Sommige pennen ondersteunen aanvullende aanpassingen. Controleer de ondersteuning voordat u ze gebruikt:
| Property | Controleer ondersteuning met |
|---|---|
| Intensiteit | IsIntensitySupported |
| Aantal afspelingen | IsPlayCountSupported |
| Duur van afspelen | IsPlayDurationSupported |
| Onderbrekingsinterval opnieuw afspelen | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
Verwante artikelen
Windows developer