Compartilhar via


Apagando usando a caneta

Se você optar por implementar o apagamento em seu aplicativo que não seja usando o objeto InkOverlay , poderá fazer isso usando um dos dois métodos a seguir.

Usando a dica da caneta

A ponta da caneta tablet geralmente é usada para manuscrito e desenho; no entanto, a dica também pode ser usada para apagar a tinta. Para fazer isso, o aplicativo deve ter um modo de apagamento que os usuários possam empregar. Nesse modo, use o teste de clique para determinar qual tinta o cursor está se movendo. Você pode definir o modo de apagamento para excluir apenas a tinta que o cursor passa sobre ou traços inteiros que cruzam o caminho do cursor, dependendo do design ou considerações funcionais.

Para obter um exemplo de como usar um modo de apagamento para apagar a tinta, consulte o Exemplo de Apagamento de Tinta.

Usando a parte superior da caneta

Para implementar o apagamento com a parte superior da caneta tablet, seu aplicativo deve procurar uma alteração no cursor. Para procurar o cursor invertido, ouça o evento CursorInRange para determinar quando o cursor está dentro do contexto do aplicativo. Quando o cursor estiver no intervalo, procure a propriedade Inverted no objeto Cursor . Se a propriedade Inverted for verdadeira, execute o teste de clique para determinar qual tinta o cursor está se movendo. Apago a tinta ou os traços que cruzam o caminho do cursor, dependendo do design ou das considerações funcionais.

Para obter um exemplo de como usar a parte superior da caneta para apagar a tinta, consulte o Exemplo de Apagamento de Tinta.

Determinar se o apagamento com a parte superior da caneta está habilitado

Os usuários podem usar a parte superior da caneta para apagar a tinta em aplicativos projetados para Tablet PC, se seu hardware específico permitir isso. Essa funcionalidade é acessada por uma caixa marcar na caixa grupo Botões de caneta na guia Opções de Caneta da caixa de diálogo Painel de controle Configurações de Tablet e Caneta. Para detectar se o usuário habilitou o apagamento para a parte superior da caneta, marcar a seguinte subchave do Registro:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters

A EraseEnable entrada dessa subchave é do tipo REG_DWORD. O valor dessa entrada é 1 para habilitado ou 0 para desabilitado. Outros valores são reservados para uso futuro.

Se o aplicativo permitir que a parte superior da caneta seja usada para apagar, você deverá marcar e armazenar em cache o valor da entrada EraseEnable quando:

  • Seu aplicativo é iniciado.
  • Sempre que seu aplicativo recebe o foco depois de perder o foco.

Use esse valor armazenado em cache para modificar o comportamento do aplicativo adequadamente.

O exemplo de C# a seguir define um GetEraseEnabled método que verifica o valor da EraseEnable entrada da SysEventParameters subchave. O GetEraseEnabled método retornará TRUE se o valor da entrada for 1; retornará FALSE se o valor da entrada for 0; ou gerará uma exceção InvalidOperationException se o valor da entrada for diferente de 1 ou 0. O GetEraseEnabled método retornará o valor esperado de TRUE se a subchave ou a entrada não estiver presente.

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