Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli zdecydujesz się zaimplementować wymazywanie w aplikacji innej niż za pomocą obiektu InkOverlay, możesz to zrobić przy użyciu jednej z następujących dwóch metod.
Używanie końcówki pióra
Końcówka pióra tabletkowego jest zwykle używana do pisma ręcznego i rysowania; jednak końcówka może być również używana do wymazywania atramentu. Aby to zrobić, aplikacja musi mieć tryb wymazywania, który użytkownicy mogą stosować. W tym trybie użyj testowania trafień, aby określić, który atrament przesuwa kursor. Możesz ustawić tryb wymazywania, aby usuwać tylko atrament, po którym przechodzi kursor, lub całe pociągnięcia, które przecinają ścieżkę kursora, w zależności od potrzeb projektowych lub funkcjonalnych.
Aby zapoznać się z przykładem używania trybu wymazywania atramentu, zobacz Przykład wymazywania atramentu.
Używanie górnej części pióra
Aby zaimplementować funkcję wymazywania za pomocą gumki na końcu pióra tabletu, aplikacja musi wykrywać zmianę w kursorze. Aby wyszukać odwrócony kursor, nasłuchuj zdarzenia CursorInRange, aby określić, kiedy kursor znajduje się w kontekście aplikacji. Kiedy kursor znajduje się w zakresie, poszukaj właściwości Odwrócone na obiekcie Kursor. Jeśli właściwość Odwrócona jest true, przeprowadź testowanie trafień, aby określić, który atrament przesuwa kursor. Wymaż atrament lub pociągnięcia przecinające ścieżkę kursora, w zależności od kwestii projektowych lub funkcjonalnych.
Aby zapoznać się z przykładem użycia górnej części pióra do wymazywania pisma odręcznego, zobacz Przykład wymazywania pisma odręcznego.
Określanie, czy funkcja wymazywania końcówką pióra jest włączona
Użytkownicy mogą używać górnej części pióra do wymazywania pisma odręcznego w aplikacjach przeznaczonych dla tabletu PC, jeśli ich konkretny sprzęt pozwala na to. Ta funkcja jest dostępna za pomocą pola wyboru w grupie Przyciski pióra na karcie Opcje pióra w oknie dialogowym Panelu sterowania Ustawienia tabletu i pióra. Aby wykryć, czy użytkownik włączył wymazywanie za pomocą górnej części pióra, sprawdź następujący podklucz rejestru:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters
Wpis EraseEnable tego podklucza jest typu REG_DWORD. Wartość tego wpisu to 1 dla włączonej lub 0 dla wyłączonej. Inne wartości są zarezerwowane do użytku w przyszłości.
Jeśli aplikacja umożliwia użycie górnej części pióra do wymazywania, należy sprawdzić i zapisać w pamięci podręcznej wartość wpisu EraseEnable, gdy:
- Aplikacja zostanie uruchomiona.
- Za każdym razem, gdy aplikacja odzyskuje uwagę po jej utracie.
Użyj tej buforowanej wartości, aby odpowiednio zmodyfikować zachowanie aplikacji.
Poniższy przykład w języku C# definiuje metodę GetEraseEnabled, która sprawdza wartość wpisu EraseEnable podklucza SysEventParameters. Metoda GetEraseEnabled zwraca TRUE, przy wartości wpisu wynoszącej 1; zwraca FALSE, przy wartości wpisu wynoszącej 0; lub zgłasza wyjątek InvalidOperationException, jeśli wartość wpisu jest inna niż 1 lub 0. Metoda GetEraseEnabled zwraca oczekiwaną wartość TRUE, jeśli podklucz lub wpis nie jest obecny.
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.");
}
}