Borrar mediante el lápiz
Si decide implementar el borrado en la aplicación que no sea mediante el objeto InkOverlay , puede hacerlo mediante uno de los dos métodos siguientes.
Usar la punta del lápiz
La punta del lápiz de tableta se utiliza generalmente para la escritura a mano y el dibujo; sin embargo, la punta también se puede usar para borrar la entrada de lápiz. Para ello, la aplicación debe tener un modo de borrado que los usuarios puedan emplear. En este modo, use pruebas de posicionamiento para determinar qué entrada de lápiz se mueve el cursor. Puede establecer el modo de borrado para eliminar solo la entrada de lápiz que el cursor pasa sobre o trazos completos que intersecan la ruta de acceso del cursor, en función del diseño o las consideraciones funcionales.
Para obtener un ejemplo de cómo usar un modo de borrado para borrar la entrada de lápiz, vea el ejemplo de borrado de lápiz.
Usar la parte superior del lápiz
Para implementar el borrado con la parte superior del lápiz de tableta, la aplicación debe buscar un cambio en el cursor. Para buscar el cursor invertido, escuche el evento CursorInRange para determinar cuándo se encuentra el cursor en el contexto de la aplicación. Cuando el cursor está en el intervalo, busque la propiedad Inverted en el objeto Cursor . Si la propiedad Inverted es true, realice pruebas de posicionamiento para determinar qué entrada de lápiz se mueve el cursor. Borre la entrada de lápiz o los trazos que cruzan la ruta de acceso del cursor, en función del diseño o las consideraciones funcionales.
Para obtener un ejemplo de cómo usar la parte superior del lápiz para borrar la entrada de lápiz, vea el ejemplo de borrado de lápiz.
Determinar si el borrado con la parte superior del lápiz está habilitado
Los usuarios pueden usar la parte superior del lápiz para borrar la tinta en aplicaciones diseñadas para tablet PC, si su hardware concreto lo permite. Se accede a esta funcionalidad mediante una casilla en el cuadro de grupo Botones de lápiz de la ficha Opciones de lápiz del cuadro de diálogo panel de control Configuración de lápiz y tableta. Para detectar si el usuario ha habilitado el borrado de la parte superior del lápiz, compruebe la siguiente subclave del Registro:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters
La EraseEnable
entrada de esta subclave es de tipo REG_DWORD. El valor de esta entrada es 1 para habilitado o 0 para deshabilitado. Otros valores se reservan para un uso futuro.
Si la aplicación permite usar la parte superior del lápiz para borrar, debe comprobar y almacenar en caché el valor de la entrada EraseEnable cuando:
- La aplicación se inicia.
- Cada vez que la aplicación recibe el foco después de perder el foco.
Use este valor almacenado en caché para modificar el comportamiento de la aplicación de forma adecuada.
En el siguiente ejemplo de C# se define un GetEraseEnabled
método que comprueba el valor de la EraseEnable
entrada de la SysEventParameters
subclave. El GetEraseEnabled
método devuelve TRUE si el valor de la entrada es 1; devuelve FALSE si el valor de la entrada es 0; o inicia una excepción InvalidOperationException si el valor de la entrada es distinto de 1 o 0. El GetEraseEnabled
método devuelve el valor esperado de TRUE si la subclave o la entrada no están presentes.
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.");
}
}