StylusPlugIn Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Denetimin özelliğine eklenebilen bir StylusPlugIns eklentiyi temsil eder.
public ref class StylusPlugIn abstract
public abstract class StylusPlugIn
type StylusPlugIn = class
Public MustInherit Class StylusPlugIn
- Devralma
-
StylusPlugIn
- Türetilmiş
Örnekler
Aşağıdaki örnek, md.'yi denetimdeki belirli bir alanla kısıtlayan bir özel StylusPlugIn öğe oluşturur.
// 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
Açıklamalar
, StylusPlugIn ayrı iş parçacıklarındaki nesneleri işlemenizi StylusPoint sağlar. Ayrı iş parçacıkları, uygulama başka bir şey yapıyor olsa bile tablet kaleminin veri girişi olarak işlemeye devam edebilmesi için kullanılır.
Donanımdan ekran kalemi noktalarını kesmek için sınıfından devralan StylusPlugIn bir sınıf oluşturun. sınıfı, StylusPlugIn kalem iş parçacığı havuzundaki bir iş parçacığındaki nesneleri işlemek StylusPoint için geçersiz kılabileceğiniz aşağıdaki yöntemlere sahiptir.
Kalemin girişi, kalem iş parçacığındaki bir öğenin StylusPlugIn girişine yönlendirilir. Kalem iş parçacığında doğru isabet testi gerçekleştirilemediğinden, bazı öğeler zaman zaman diğer öğelere yönelik ekran kalemi girişi alabilir. Bir işlemi gerçekleştirmeden önce girişin doğru yönlendirilmiş olduğundan emin olmanız gerekiyorsa, öğesine abone olun ve işlemi , OnStylusMoveProcessedveya OnStylusUpProcessed yönteminde OnStylusDownProcessedgerçekleştirin. Bu yöntemler, doğru isabet testi gerçekleştirildikten sonra ana uygulama iş parçacığı tarafından çağrılır. Bu yöntemlere abone olmak için kalem iş parçacığında gerçekleşen yönteminde yöntemini çağırın NotifyWhenProcessed . Örneğin, içinde OnStylusMoveOnStylusMoveProcessed çağrısı NotifyWhenProcessed yaparsanız gerçekleşir.
Not
Denetimin içinde bir StylusPlugIn kullanıyorsanız, eklentiyi ve denetimi kapsamlı bir şekilde test ederek istenmeyen özel durumlar oluşturmadığından emin olmanız gerekir.
XAML Metni Kullanımı
Bu sınıf genellikle XAML'de kullanılmaz.
Oluşturucular
StylusPlugIn() |
StylusPlugIn sınıfının yeni bir örneğini başlatır. |
Özellikler
Element |
öğesinin UIElement eklendiği öğeyi StylusPlugIn alır. |
ElementBounds |
öğesinin önbelleğe alınmış sınırlarını alır. |
Enabled |
etkin olup olmadığını StylusPlugIn alır veya ayarlar. |
IsActiveForInput |
öğesinin StylusPlugIn girişi kabul edip edemeyeceğini alır. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
OnAdded() |
öğesi bir öğeye eklendiğinde StylusPlugIn gerçekleşir. |
OnEnabledChanged() |
Özellik değiştiğinde Enabled gerçekleşir. |
OnIsActiveForInputChanged() |
Özellik değiştiğinde IsActiveForInput gerçekleşir. |
OnRemoved() |
öğesi bir öğeden kaldırıldığında StylusPlugIn gerçekleşir. |
OnStylusDown(RawStylusInput) |
Tablet kalemi dijitalleştiriciye dokunduğunda kalem iş parçacığı havuzundaki bir iş parçacığında gerçekleşir. |
OnStylusDownProcessed(Object, Boolean) |
Tablet kalemi dijitalleştiriciye dokunduğunda uygulama kullanıcı arabirimi (kullanıcı arabirimi) iş parçacığında gerçekleşir. |
OnStylusEnter(RawStylusInput, Boolean) |
İmleç bir öğenin sınırlarına girdiğinde kalem iş parçacığında gerçekleşir. |
OnStylusLeave(RawStylusInput, Boolean) |
İmleç bir öğenin sınırlarını bıraktığında kalem iş parçacığında gerçekleşir. |
OnStylusMove(RawStylusInput) |
Tablet kalemi dijitalleştiricide hareket ettiğinde bir kalem yazışması üzerinde gerçekleşir. |
OnStylusMoveProcessed(Object, Boolean) |
Tablet kalemi dijitalleştiricide hareket ettiğinde uygulama kullanıcı arabirimi (kullanıcı arabirimi) iş parçacığında gerçekleşir. |
OnStylusUp(RawStylusInput) |
Kullanıcı tablet kalemi dijitalleştiriciden kaldırdığında kalem yazışması üzerinde gerçekleşir. |
OnStylusUpProcessed(Object, Boolean) |
Kullanıcı tablet kalemini dijitalleştiriciden kaldırdığında uygulama kullanıcı arabirimi (kullanıcı arabirimi) iş parçacığında gerçekleşir. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |