Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase StylusPlugIn

 

Publicado: octubre de 2016

Representa un complemento que se pueden agregar a un control StylusPlugIns propiedad.

Espacio de nombres:   System.Windows.Input.StylusPlugIns
Ensamblado:  PresentationCore (en PresentationCore.dll)

System.Object
  System.Windows.Input.StylusPlugIns.StylusPlugIn
    System.Windows.Input.StylusPlugIns.DynamicRenderer

public abstract class StylusPlugIn

NombreDescripción
System_CAPS_protmethodStylusPlugIn()

Inicializa una nueva instancia de la clase StylusPlugIn.

NombreDescripción
System_CAPS_pubpropertyElement

Obtiene el objeto UIElement al que se adjunta StylusPlugIn.

System_CAPS_pubpropertyElementBounds

Obtiene los límites del elemento en caché.

System_CAPS_pubpropertyEnabled

Obtiene o establece si la StylusPlugIn está activo.

System_CAPS_pubpropertyIsActiveForInput

Obtiene si la StylusPlugIn es capaz de aceptar la entrada.

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de elementos no utilizados.(Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodOnAdded()

Se produce cuando el StylusPlugIn se agrega a un elemento.

System_CAPS_protmethodOnEnabledChanged()

Se produce cuando cambia la propiedad Enabled.

System_CAPS_protmethodOnIsActiveForInputChanged()

Se produce cuando cambia la propiedad IsActiveForInput.

System_CAPS_protmethodOnRemoved()

Se produce cuando el StylusPlugIn se quita de un elemento.

System_CAPS_protmethodOnStylusDown(RawStylusInput)

Se produce en un subproceso en el grupo de subprocesos de lápiz cuando el lápiz toca el digitalizador.

System_CAPS_protmethodOnStylusDownProcessed(Object, Boolean)

Se produce en el subproceso UI (interfaz de usuario) de la aplicación cuando el lápiz toca el digitalizador.

System_CAPS_protmethodOnStylusEnter(RawStylusInput, Boolean)

Se produce en un subproceso del lápiz cuando el cursor entra en los límites de un elemento.

System_CAPS_protmethodOnStylusLeave(RawStylusInput, Boolean)

Se produce en un subproceso del lápiz cuando el cursor sale de los límites de un elemento.

System_CAPS_protmethodOnStylusMove(RawStylusInput)

Se produce en un subproceso del lápiz cuando el lápiz de tablet PC se mueve en el digitalizador.

System_CAPS_protmethodOnStylusMoveProcessed(Object, Boolean)

Se produce en el subproceso UI (interfaz de usuario) de la aplicación cuando el lápiz de tablet PC se mueve en el digitalizador.

System_CAPS_protmethodOnStylusUp(RawStylusInput)

Se produce en un subproceso del lápiz cuando el usuario levanta el lápiz de tablet PC del digitalizador.

System_CAPS_protmethodOnStylusUpProcessed(Object, Boolean)

Se produce en el subproceso UI (interfaz de usuario) de la aplicación cuando el usuario levanta el lápiz de tablet PC del digitalizador.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa el objeto actual.(Heredado de Object).

El StylusPlugIn permite manipular StylusPoint objetos en subprocesos separados. Subprocesos independientes se utilizan para que la tinta aún se representa como los datos de entradas de lápiz de Tablet PC incluso si la aplicación está haciendo algo más.

Para interceptar los puntos del lápiz óptico desde el hardware, cree una clase que hereda de la StylusPlugIn clase. La StylusPlugIn clase tiene los siguientes métodos que se pueden invalidar para manipular StylusPoint grupo de subprocesos de objetos en un subproceso de lápiz.

La entrada del lápiz se enruta a un elemento StylusPlugIn en el subproceso del lápiz. Puesto que no se puede realizar una prueba de posicionamiento precisa en el subproceso del lápiz, algunos elementos en ocasiones pueden recibir la entrada del lápiz dirigida a otros elementos. Si necesita asegurarse de que la entrada se enrutó correctamente antes de realizar una operación, suscríbase a y realizar la operación en el OnStylusDownProcessed, OnStylusMoveProcessed, o OnStylusUpProcessed (método). El subproceso principal de la aplicación invoca estos métodos una vez realizada la prueba de posicionamiento precisa. Para suscribirse a estos métodos, llame a la NotifyWhenProcessed método en el método que se produce en el subproceso del lápiz. Por ejemplo, si se llama a NotifyWhenProcessed en OnStylusMove, el OnStylusMoveProcessed se produce.

System_CAPS_noteNota

Si utiliza un StylusPlugIn dentro de un control, debe probar el complemento y controlarlo exhaustivamente para asegurarse de que produzca ninguna excepción imprevista.

Esta clase no se utiliza habitualmente en XAML.

En el ejemplo siguiente se crea un archivo StylusPlugIn que restringe la entrada de lápiz a un área determinada del control.

// 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);
        }
    }
}

.NET Framework
Disponible desde 3.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: