Поделиться через


Удаление с помощью пера

Если вы решили реализовать стирания в приложении, отличном от объекта InkOverlay , это можно сделать с помощью одного из следующих двух методов.

Использование кончика пера

Кончик пера планшета обычно используется для рукописного ввода и рисования; Однако чаевые также можно использовать для удаления рукописного ввода. Для этого приложение должно иметь режим очистки, который могут использовать пользователи. В этом режиме используйте проверку нажатия, чтобы определить, на какой рукописный фрагмент перемещается курсор. Режим стирания можно настроить для удаления только рукописных фрагментов, которые курсор передает, или целых штрихов, пересекающих путь курсора, в зависимости от конструктора или функциональных соображений.

Пример использования режима стирания рукописного ввода см . в разделе Пример удаления рукописного фрагмента.

Использование верхней части пера

Чтобы реализовать стирания с помощью верхней части пера планшета, приложение должно искать изменения в курсоре. Чтобы найти перевернутый курсор, прослушайте событие CursorInRange , чтобы определить, когда курсор находится в контексте приложения. Когда курсор находится в диапазоне, найдите свойство Inverted объекта Cursor . Если свойство Inverted имеет значение true, выполните проверку нажатия, чтобы определить, на какой рукописный фрагмент перемещается курсор. Удалите рукописные фрагменты или штрихи, пересекающие путь курсора, в зависимости от конструктивных или функциональных аспектов.

Пример использования верхней части пера для удаления рукописного ввода см. в разделе Пример стирания рукописного фрагмента.

Определение того, включено ли стирение с помощью верхней части пера

Пользователи могут использовать верхнюю часть пера для удаления рукописного ввода в приложениях, предназначенных для планшетного пк, если это позволяет их конкретное оборудование. Доступ к этой функции осуществляется с помощью поля проверка в группе Кнопки пера на вкладке Параметры пера диалогового окна Параметры планшета и пера. Чтобы определить, включил ли пользователь стирать для верхней части пера, проверка следующий подраздел реестра:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters

Запись EraseEnable этого подраздела имеет тип REG_DWORD. Значение этой записи равно 1 для включено или 0 для отключена. Другие значения зарезервированы для использования в будущем.

Если приложение позволяет использовать верхнюю часть пера для стирания, следует проверка и кэшировать значение записи EraseEnable в следующих случаях:

  • Приложение запускается.
  • Каждый раз, когда приложение получает фокус после потери фокуса.

Используйте это кэшированное значение, чтобы соответствующим образом изменить поведение приложения.

В следующем примере C# определяется GetEraseEnabled метод, который проверяет значение EraseEnable записи подраздела SysEventParameters . Метод GetEraseEnabled возвращает значение TRUE , если значение записи равно 1; возвращает значение FALSE , если значение записи равно 0; или исключение InvalidOperationException , если значение записи отличается от 1 или 0. Метод GetEraseEnabled возвращает ожидаемое значение TRUE , если подраздел или запись отсутствуют.

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.");
    }
}