StylusPlugIn 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤의 StylusPlugIns 속성에 추가할 수 있는 플러그 인을 나타냅니다.
public ref class StylusPlugIn abstract
public abstract class StylusPlugIn
type StylusPlugIn = class
Public MustInherit Class StylusPlugIn
- 상속
-
StylusPlugIn
- 파생
예제
다음 예제에서는 사용자 지정 StylusPlugIn 잉크 컨트롤에 있는 특정 영역을 제한 하는 합니다.
// EventArgs for the StrokeRendered event.
public class StrokeRenderedEventArgs : EventArgs
{
StylusPointCollection strokePoints;
public StrokeRenderedEventArgs(StylusPointCollection points)
{
strokePoints = points;
}
public StylusPointCollection StrokePoints
{
get
{
return strokePoints;
}
}
}
// EventHandler for the StrokeRendered event.
public delegate void StrokeRenderedEventHandler(object sender, StrokeRenderedEventArgs e);
// A StylusPlugin that restricts the input area
class FilterPlugin : StylusPlugIn
{
StylusPointCollection collectedPoints;
int currentStylus = -1;
public event StrokeRenderedEventHandler StrokeRendered;
protected override void OnStylusDown(RawStylusInput rawStylusInput)
{
// Run the base class before modifying the data
base.OnStylusDown(rawStylusInput);
if (currentStylus == -1)
{
StylusPointCollection pointsFromEvent = rawStylusInput.GetStylusPoints();
// Create an emtpy StylusPointCollection to contain the filtered
// points.
collectedPoints = new StylusPointCollection(pointsFromEvent.Description);
// Restrict the stylus input and add the filtered
// points to collectedPoints.
StylusPointCollection points = FilterPackets(pointsFromEvent);
rawStylusInput.SetStylusPoints(points);
collectedPoints.Add(points);
currentStylus = rawStylusInput.StylusDeviceId;
}
}
protected override void OnStylusMove(RawStylusInput rawStylusInput)
{
// Run the base class before modifying the data
base.OnStylusMove(rawStylusInput);
if (currentStylus == rawStylusInput.StylusDeviceId)
{
StylusPointCollection pointsFromEvent = rawStylusInput.GetStylusPoints();
// Restrict the stylus input and add the filtered
// points to collectedPoints.
StylusPointCollection points = FilterPackets(pointsFromEvent);
rawStylusInput.SetStylusPoints(points);
collectedPoints.Add(points);
}
}
protected override void OnStylusUp(RawStylusInput rawStylusInput)
{
// Run the base class before modifying the data
base.OnStylusUp(rawStylusInput);
if (currentStylus == rawStylusInput.StylusDeviceId)
{
StylusPointCollection pointsFromEvent = rawStylusInput.GetStylusPoints();
// Restrict the stylus input and add the filtered
// points to collectedPoints.
StylusPointCollection points = FilterPackets(pointsFromEvent);
rawStylusInput.SetStylusPoints(points);
collectedPoints.Add(points);
// Subscribe to the OnStylusUpProcessed method.
rawStylusInput.NotifyWhenProcessed(collectedPoints);
currentStylus = -1;
}
}
private StylusPointCollection FilterPackets(StylusPointCollection stylusPoints)
{
// Modify the (X,Y) data to move the points
// inside the acceptable input area, if necessary
for (int i = 0; i < stylusPoints.Count; i++)
{
StylusPoint sp = stylusPoints[i];
if (sp.X < 50) sp.X = 50;
if (sp.X > 250) sp.X = 250;
if (sp.Y < 50) sp.Y = 50;
if (sp.Y > 250) sp.Y = 250;
stylusPoints[i] = sp;
}
// Return the modified StylusPoints.
return stylusPoints;
}
// This is called on the application thread.
protected override void OnStylusUpProcessed(object callbackData, bool targetVerified)
{
// Check that the element actually receive the OnStylusUp input.
if (targetVerified)
{
StylusPointCollection strokePoints = callbackData as StylusPointCollection;
if (strokePoints == null)
{
return;
}
// Raise the StrokeRendered event so the consumer of the plugin can
// add the filtered stroke to its StrokeCollection.
StrokeRenderedEventArgs e = new StrokeRenderedEventArgs(strokePoints);
OnStrokeRendered(e);
}
}
protected virtual void OnStrokeRendered(StrokeRenderedEventArgs e)
{
if (StrokeRendered != null)
{
StrokeRendered(this, e);
}
}
}
' EventArgs for the StrokeRendered event.
Public Class StrokeRenderedEventArgs
Inherits EventArgs
Private currentStrokePoints As StylusPointCollection
Public Sub New(ByVal points As StylusPointCollection)
currentStrokePoints = points
End Sub
Public ReadOnly Property StrokePoints() As StylusPointCollection
Get
Return currentStrokePoints
End Get
End Property
End Class
' EventHandler for the StrokeRendered event.
Public Delegate Sub StrokeRenderedEventHandler(ByVal sender As Object, ByVal e As StrokeRenderedEventArgs)
' A StylusPlugin that restricts the input area
Class FilterPlugin
Inherits StylusPlugIn
Private collectedPoints As StylusPointCollection
Private currentStylus As Integer = -1
Public Event StrokeRendered As StrokeRenderedEventHandler
Protected Overrides Sub OnStylusDown(ByVal rawStylusInput As RawStylusInput)
' Run the base class before we modify the data
MyBase.OnStylusDown(rawStylusInput)
If currentStylus = -1 Then
Dim pointsFromEvent As StylusPointCollection = rawStylusInput.GetStylusPoints()
' Create an emtpy StylusPointCollection to contain the filtered
' points.
collectedPoints = New StylusPointCollection(pointsFromEvent.Description)
' Restrict the stylus input and add the filtered
' points to collectedPoints.
Dim points As StylusPointCollection = FilterPackets(pointsFromEvent)
rawStylusInput.SetStylusPoints(points)
collectedPoints.Add(points)
currentStylus = rawStylusInput.StylusDeviceId
End If
End Sub
Protected Overrides Sub OnStylusMove(ByVal rawStylusInput As RawStylusInput)
' Run the base class before we modify the data
MyBase.OnStylusMove(rawStylusInput)
If currentStylus = rawStylusInput.StylusDeviceId Then
Dim pointsFromEvent As StylusPointCollection = rawStylusInput.GetStylusPoints()
' Restrict the stylus input and add the filtered
' points to collectedPoints.
Dim points As StylusPointCollection = FilterPackets(pointsFromEvent)
rawStylusInput.SetStylusPoints(points)
collectedPoints.Add(points)
End If
End Sub
Protected Overrides Sub OnStylusUp(ByVal rawStylusInput As RawStylusInput)
' Run the base class before we modify the data
MyBase.OnStylusUp(rawStylusInput)
If currentStylus = rawStylusInput.StylusDeviceId Then
Dim pointsFromEvent As StylusPointCollection = rawStylusInput.GetStylusPoints()
' Restrict the stylus input and add the filtered
' points to collectedPoints.
Dim points As StylusPointCollection = FilterPackets(pointsFromEvent)
rawStylusInput.SetStylusPoints(points)
collectedPoints.Add(points)
RecordPoints(collectedPoints, "collectPoints - StylusUp")
' Subscribe to the OnStylusUpProcessed method.
rawStylusInput.NotifyWhenProcessed(collectedPoints)
currentStylus = -1
End If
End Sub
Private Function FilterPackets(ByVal stylusPoints As StylusPointCollection) As StylusPointCollection
' Modify the (X,Y) data to move the points
' inside the acceptable input area, if necessary.
Dim i As Integer
For i = 0 To stylusPoints.Count - 1
Dim sp As StylusPoint = stylusPoints(i)
If sp.X < 50 Then
sp.X = 50
End If
If sp.X > 250 Then
sp.X = 250
End If
If sp.Y < 50 Then
sp.Y = 50
End If
If sp.Y > 250 Then
sp.Y = 250
End If
stylusPoints(i) = sp
Next i
' Return the modified StylusPoints.
Return stylusPoints
End Function 'FilterPackets
' This is called on the application thread.
Protected Overrides Sub OnStylusUpProcessed(ByVal callbackData As Object, _
ByVal targetVerified As Boolean)
' Check that the element actually receive the OnStylusUp input.
If targetVerified Then
Dim strokePoints As StylusPointCollection
strokePoints = CType(callbackData, StylusPointCollection)
If strokePoints Is Nothing Then
Return
End If
' Raise the StrokeRendered event so the consumer of the plugin can
' add the filtered stroke to its StrokeCollection.
RecordPoints(strokePoints, "onStylusUpProcessed")
Dim e As New StrokeRenderedEventArgs(strokePoints)
OnStrokeRendered(e)
End If
End Sub
Protected Overridable Sub OnStrokeRendered(ByVal e As StrokeRenderedEventArgs)
RaiseEvent StrokeRendered(Me, e)
End Sub
Public Sub RecordPoints(ByVal points As StylusPointCollection, ByVal name As String)
System.Diagnostics.Debug.WriteLine(name)
For Each point As StylusPoint In points
System.Diagnostics.Debug.WriteLine(" x: " & point.X & " y: " & point.Y)
Next
End Sub
End Class
설명
합니다 StylusPlugIn 조작할 수 있도록 StylusPoint 별도 스레드에서 개체입니다. 별도 스레드는 잉크 태블릿 펜 입력 데이터와 애플리케이션은 다른 작업을 실행 하는 경우에 여전히 렌더링 되도록 사용 됩니다.
하드웨어의 스타일러스 포인트를 가로채에서 상속 되는 클래스를 만들고 여 StylusPlugIn 클래스입니다. 합니다 StylusPlugIn 클래스에 메서드를 조작 하기 위해 재정의할 수 있습니다. StylusPoint 개체 펜 스레드에서 스레드 풀입니다.
펜 입력 요소의 라우팅됩니다 StylusPlugIn 펜 스레드입니다. 펜 스레드에서 정확한 적중 테스트를 수행할 수 없습니다, 이후 일부 요소가 다른 요소에 대 한 스타일러스 입력을 받는 경우도 합니다. 입력이 작업을 수행 하기 전에 올바르게 라우트 되도록 해야 하는 경우 등록 하 고 작업을 수행 합니다 OnStylusDownProcessed, OnStylusMoveProcessed, 또는 OnStylusUpProcessed 메서드. 이러한 메서드는 정확한 적중 테스트가 수행 된 후 주 애플리케이션 스레드에 의해 호출 됩니다. 를 구독 하려면 이러한 메서드 호출을 NotifyWhenProcessed 펜 스레드에서 발생 하는 방법에 대 한 메서드. 예를 들어, 호출 하는 경우 NotifyWhenProcessed 에 OnStylusMove는 OnStylusMoveProcessed 발생 합니다.
참고
사용 하는 경우는 StylusPlugIn 컨트롤 안에 테스트 플러그 인 및 의도 하지 않은 예외를 throw 하지 않습니다 되도록 광범위 하 게 제어 해야 합니다.
XAML 텍스트 사용
이 클래스는 XAML에서 일반적으로 사용 되지 않습니다.
생성자
StylusPlugIn() |
StylusPlugIn 클래스의 새 인스턴스를 초기화합니다. |
속성
Element |
UIElement가 연결된 StylusPlugIn를 가져옵니다. |
ElementBounds |
요소의 캐시된 범위를 가져옵니다. |
Enabled |
StylusPlugIn이 활성 상태인지 여부를 가져오거나 설정합니다. |
IsActiveForInput |
StylusPlugIn이 입력을 받아들일 수 있는지 여부를 가져옵니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnAdded() |
StylusPlugIn가 요소에 추가되면 발생합니다. |
OnEnabledChanged() |
Enabled 속성이 변경되면 발생합니다. |
OnIsActiveForInputChanged() |
IsActiveForInput 속성이 변경되면 발생합니다. |
OnRemoved() |
요소에서 StylusPlugIn이 제거되면 발생합니다. |
OnStylusDown(RawStylusInput) |
태블릿 펜이 디지타이저에 닿을 때 펜 스레드 풀의 스레드에서 발생합니다. |
OnStylusDownProcessed(Object, Boolean) |
태블릿 펜이 디지타이저에 닿을 때 애플리케이션 UI(사용자 인터페이스) 스레드에서 발생합니다. |
OnStylusEnter(RawStylusInput, Boolean) |
커서가 요소 범위 안으로 들어올 때 펜 스레드에서 발생합니다. |
OnStylusLeave(RawStylusInput, Boolean) |
커서가 요소 범위를 벗어날 때 펜 스레드에서 발생합니다. |
OnStylusMove(RawStylusInput) |
태블릿 펜이 디지타이저에서 움직일 때 펜 스레드에서 발생합니다. |
OnStylusMoveProcessed(Object, Boolean) |
태블릿 펜이 디지타이저 위에서 이동할 때 애플리케이션 UI(사용자 인터페이스) 스레드에서 발생합니다. |
OnStylusUp(RawStylusInput) |
사용자가 태블릿 펜을 디지타이저에서 뗄 때 펜 스레드에서 발생합니다. |
OnStylusUpProcessed(Object, Boolean) |
사용자가 태블릿 펜을 디지타이저에서 뗄 때 애플리케이션 UI(사용자 인터페이스) 스레드에서 발생합니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |