Löschen mithilfe des Stifts

Wenn Sie in Ihrer Anwendung eine andere Löschung als das InkOverlay-Objekt implementieren möchten, können Sie dazu eine der beiden folgenden Methoden verwenden.

Verwenden der Stiftspitze

Die Spitze des Tablettstifts wird in der Regel für Handschrift und Zeichnung verwendet. Der Trinkgeld kann jedoch auch zum Löschen von Ink verwendet werden. Dazu muss die Anwendung über einen Löschmodus verfügen, den Benutzer verwenden können. Verwenden Sie in diesem Modus Treffertests, um zu bestimmen, über welchen Ink der Cursor bewegt wird. Sie können den Löschmodus so festlegen, dass je nach Entwurf oder funktionalen Überlegungen nur die Vom Cursor übergebenen Ink-Striche oder ganze Striche gelöscht werden, die den Cursorpfad überschneiden.

Ein Beispiel für die Verwendung eines Löschmodus zum Löschen von Ink finden Sie unter Ink Erasing Sample.

Verwenden des Oberen Des Stifts

Um eine Löschung mit dem oberen Rand des Tablettstifts zu implementieren, muss Ihre Anwendung nach einer Änderung im Cursor suchen. Um nach dem invertierten Cursor zu suchen, lauschen Sie auf das CursorInRange-Ereignis, um zu bestimmen, wann sich der Cursor im Kontext Ihrer Anwendung befindet. Wenn sich der Cursor im Bereich befindet, suchen Sie im Cursorobjekt nach der Eigenschaft Inverted. Wenn die Inverted-Eigenschaft true ist, führen Sie Treffertests durch, um zu bestimmen, über welchen Ink der Cursor bewegt wird. Löschen Sie je nach Entwurf oder funktionalen Überlegungen entweder die Ink- oder Striche, die den Cursorpfad überschneiden.

Ein Beispiel für die Verwendung des Oberen des Stifts zum Löschen von Ink finden Sie unter Ink Erasing Sample.

Bestimmen, ob das Löschen mit dem oberen Rand des Stifts aktiviert ist

Benutzer können den oberen Rand des Stifts verwenden, um Ink in Anwendungen zu löschen, die für Tablet PC entwickelt wurden, wenn dies auf der jeweiligen Hardware möglich ist. Auf diese Funktionalität wird über ein Kontrollkästchen im Gruppenfeld Stiftschaltflächen auf der Registerkarte Stiftoptionen des Dialogfelds Tablet und Stift Einstellungen Systemsteuerung zugegriffen. Überprüfen Sie den folgenden Registrierungsunterschlüssel, um zu ermitteln, ob der Benutzer das Löschen für den oberen Rand des Stifts aktiviert hat:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters

Der EraseEnable Eintrag dieses Unterschlüssels ist vom Typ REG _ DWORD. Der Wert dieses Eintrags ist 1 für aktiviert und 0 für deaktiviert. Andere Werte sind für die zukünftige Verwendung reserviert.

Wenn Ihre Anwendung zulässt, dass der obere Rand des Stifts zum Löschen verwendet wird, sollten Sie den Wert des Eintrags EraseEnable überprüfen und zwischenspeichern, wenn:

  • Ihre Anwendung wird gestartet.
  • Jedes Mal, wenn Ihre Anwendung den Fokus erhält, nachdem sie den Fokus verloren hat.

Verwenden Sie diesen zwischengespeicherten Wert, um das Verhalten Ihrer Anwendung entsprechend zu ändern.

Im folgenden # C-Beispiel wird eine GetEraseEnabled Methode definiert, die den Wert des EraseEnable Eintrags des SysEventParameters Unterschlüssels überprüft. Die GetEraseEnabled Methode gibt TRUE zurück, wenn der Wert des Eintrags 1 ist, gibt FALSE zurück, wenn der Wert des Eintrags 0 ist, oder löst eine InvalidOperationException-Ausnahme aus, wenn der Wert des Eintrags nicht 1 oder 0 ist. Die GetEraseEnabled -Methode gibt den erwarteten Wert TRUE zurück, wenn der Unterschlüssel oder der Eintrag nicht vorhanden ist.

private bool GetEraseEnabled()
{
    // 0 is disabled, 1 is enabled. The default is enabled
    const int Enabled = 1;
    const int Disabled = 0;
    const int DefaultValue = Enabled;

    // Constants for the registry subkey and the entry
    const string Subkey =
                @"SOFTWARE\Microsoft\WISP\PEN\SysEventParameters";
    const string KeyEntry = "EraseEnable";

    // Open the registry subkey.
    Microsoft.Win32.RegistryKey regKey =
        Microsoft.Win32.Registry.CurrentUser.OpenSubKey(Subkey);

    // Retrieve the value of the EraseEnable subkey entry. If either
    // the subkey or the entry does not exist, use the default value.
    object keyValue = (null == regKey) ? DefaultValue :
        regKey.GetValue(KeyEntry,DefaultValue);

    switch((int)keyValue)
    {
        case Enabled:
            // Return true if erasing on pen inversion is enabled. 
            return true;
        case Disabled:
            // Return false if erasing on pen inversion is disabled. 
            return false;
        default:
            // Otherwise, throw an exception. Do not assume this is
            // a Boolean value. Enabled and Disabled are the values
            // defined for this entry at this time. Other values are
            // reserved for future use.
            throw new InvalidOperationException(
                "Unexpected registry subkey value.");
    }
}