펜을 사용하여 지우기
InkOverlay 개체를 사용하는 대신 애플리케이션에서 지우기를 구현하도록 선택하는 경우 다음 두 가지 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
펜 팁 사용
태블릿 펜의 끝은 일반적으로 필기 및 그리기에 사용됩니다. 그러나 팁을 사용하여 잉크를 지울 수도 있습니다. 이렇게 하려면 애플리케이션에 사용자가 사용할 수 있는 지우기 모드가 있어야 합니다. 이 모드에서는 적중 테스트를 사용하여 커서가 이동하는 잉크를 확인합니다. 디자인 또는 기능 고려 사항에 따라 커서가 전달하는 잉크 또는 커서의 경로를 교차하는 전체 스트로크만 삭제하도록 지우기 모드를 설정할 수 있습니다.
지우기 모드를 사용하여 잉크를 지우는 방법에 대한 예제는 잉크 지우기 샘플을 참조하세요.
펜 위쪽 사용
태블릿 펜의 위쪽으로 지우기를 구현하려면 애플리케이션에서 커서의 변경 내용을 찾아야 합니다. 반전된 커서를 찾으려면 CursorInRange 이벤트를 수신 대기하여 커서가 애플리케이션의 컨텍스트 내에 있는 시기를 확인합니다. 커서가 범위에 있으면 Cursor 개체에서 반전된 속성을 찾습니다. Inverted 속성이 true이면 적중 테스트를 수행하여 커서가 이동하는 잉크를 확인합니다. 디자인 또는 기능 고려 사항에 따라 커서의 경로를 교차하는 잉크 또는 스트로크를 지웁니다.
펜의 위쪽을 사용하여 잉크를 지우는 방법에 대한 예제는 잉크 지우기 샘플을 참조하세요.
펜 위쪽을 사용하여 지우기를 사용할 수 있는지 확인
사용자는 특정 하드웨어에서 허용하는 경우 펜 상단을 사용하여 태블릿 PC용으로 설계된 응용 프로그램에서 잉크를 지울 수 있습니다. 이 기능은 태블릿 및 펜 설정 제어판 대화 상자의 펜 옵션 탭에 있는 펜 단추 그룹 상자의 검사 상자에서 액세스할 수 있습니다. 사용자가 펜 맨 위에 지우기를 사용하도록 설정했는지 감지하려면 다음 레지스트리 하위 키를 검사.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WISP\PEN\SysEventParameters
이 EraseEnable
하위 키의 항목은 REG_DWORD 형식입니다. 이 항목의 값은 사용의 경우 1, 사용 안 함의 경우 0입니다. 다른 값은 나중에 사용할 수 있도록 예약되어 있습니다.
애플리케이션에서 펜의 위쪽을 지우는 데 사용할 수 있도록 허용하는 경우 다음과 같은 경우 검사 EraseEnable 항목의 값을 캐시해야 합니다.
- 애플리케이션이 시작됩니다.
- 포커스가 손실된 후 애플리케이션이 포커스를 받을 때마다
이 캐시된 값을 사용하여 애플리케이션의 동작을 적절하게 수정합니다.
다음 C# 예제에서는 GetEraseEnabled
하위 키의 항목 값을 EraseEnable
확인하는 메서드를 SysEventParameters
정의합니다. 메서드는 GetEraseEnabled
항목 값이 1이면 TRUE 를 반환하고, 항목 값이 0이면 FALSE 를 반환하고, 항목 값이 1 또는 0이 아닌 경우 InvalidOperationException 예외를 throw합니다. 메서드는 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.");
}
}