StylusInput API에 대한 디자인 고려 사항
다음은 StylusInput API에 대한 디자인 고려 사항입니다.
펜이 다운된 동안 RealTimeStylus 개체의 WindowInputRectangle 속성과 DynamicRenderer 개체의 ClipRectangle 속성을 업데이트할 수 있습니다. 애플리케이션이 잉크를 수집하는 동안 동적 그리기 영역을 사용하려는 경우에 유용할 수 있습니다.
플러그 인 코드의 재사용 및 유지 관리를 최적화하기 위해 플러그 인은 애플리케이션에 직접 호출하지 말고 CustomStylusData (관리 코드의 CustomeStylusData 개체)를 사용하여 애플리케이션과 통신해야 합니다.
RealTimeStylus 개체의 플러그 인 컬렉션이 정렬됩니다. 이러한 컬렉션 내에서 플러그 인의 상대적 위치는 매우 중요할 수 있습니다. 예를 들어 패킷 정보를 수정하는 플러그 인은 동적 렌더러 플러그 인 전에 동기 플러그 인 컬렉션에 추가되어야 합니다.
태블릿 펜의 데이터 스트림에 사용자 지정 스타일러스 데이터를 추가하는 기능은 드물게 사용해야 합니다. 다른 플러그 인이 데이터 스트림의 일부로 이 정보를 수신해야 하는 경우에만 이 기능을 사용합니다. 또한 무한 루프를 만들 수 있으므로 플러그 인에 들어오는 다른 사용자 지정 스타일러스 데이터에 대한 응답으로 사용자 지정 스타일러스 데이터를 추가하지 마세요.
RealTimeStylus 개체를 사용하는 동안 플러그 인 컬렉션을 수정할 수 있습니다. 그러나 이렇게 하면 애플리케이션의 동작을 예측하기가 더 어려워질 수 있습니다. RealTimeStylus 개체를 사용하는 동안 플러그 인이 추가되면 RealTimeStylus 개체는 플러그 인의 Microsoft.StylusInput.IStylusSyncPlugin을 호출합니다. RealTimeStylusEnabled 메서드(관리 코드의 Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusEnabled 또는 Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusEnabled 메서드). RealTimeStylus 개체를 사용하는 동안 플러그 인이 제거되면 RealTimeStylus 개체는 플러그 인의 RealTimeStylusDisabled 메서드(관리 코드의 Microsoft.StylusInput.IStylusSyncPlugin.RealTimeStylusDisabled 또는 Microsoft.StylusInput.IStylusAsyncPlugin.RealTimeStylusDisabled 메서드)를 호출합니다. 이렇게 하면 플러그 인이 RealTimeStylus 개체의 Enabled 속성을 검사 않고도 적절한 상태를 유지할 수 있습니다. RealTimeStylus 개체를 사용하는 동안 플러그 인이 추가되면 플러그 인이 수신하는 플러그 인 데이터에 초기 데이터의 컨텍스트를 적절하게 설정하기에 충분한 정보가 포함되지 않을 수 있습니다. 예를 들어 새로 추가된 플러그 인은 스트로크 중간에 있는 펜에서 패킷 데이터를 수신하기 시작할 수 있습니다. 마찬가지로 RealTimeStylus 개체를 사용하는 동안 플러그 인이 제거되면 플러그 인이 받은 플러그 인 데이터가 데이터 처리를 완료하기에 충분하지 않을 수 있습니다.
참고
전반적인 안정성을 위해 RealTimeStylusEnabled 또는 RealTimeStylusDisabled 메서드가 호출되면 플러그 인의 내부 상태를 다시 설정합니다.
플러그 인이 연결된 플러그 인 컬렉션을 수정하는 경우 RealTimeStylus 개체는 예외를 throw합니다. 이는 플러그 인이 RealTimeStylus 개체에서 해당 컬렉션의 멤버로 호출되는 동안에만 발생합니다.