InkPresenter Clase

Definición

Proporciona propiedades, métodos y eventos para administrar la entrada, el procesamiento y la representación de entradas de lápiz (estándar y modificadas) para un control InkCanvas .

public ref class InkPresenter sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class InkPresenter final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class InkPresenter
Public NotInheritable Class InkPresenter
Herencia
Object Platform::Object IInspectable InkPresenter
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

Aquí se muestra cómo superponer anotaciones de entrada de lápiz en una imagen. En este ejemplo, los datos de entrada de lápiz no se capturan ni guardan con un inkPresenter correspondiente.

<ScrollViewer>
  <Grid>
    <Image Source="<path>"></Image>
    <InkCanvas x:Name="inkCanvas"></InkCanvas>
  </Grid>
</ScrollView

En este apartado, configuraremos InkPresenter para que interprete los datos de entrada del lápiz y el mouse como trazos de lápiz. También establecemos algunos atributos iniciales de trazo de lápiz que se usan para representar trazos en InkCanvas.

public MainPage()
{
    this.InitializeComponent();

    // Set supported inking device types.
    inkCanvas.InkPresenter.InputDeviceTypes = 
        Windows.UI.Core.CoreInputDeviceTypes.Mouse | 
        Windows.UI.Core.CoreInputDeviceTypes.Pen;

    // Set initial ink stroke attributes.
    InkDrawingAttributes drawingAttributes = new InkDrawingAttributes();
    drawingAttributes.Color = Windows.UI.Colors.Black;
    drawingAttributes.IgnorePressure = false;
    drawingAttributes.FitToCurve = true;
    inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
}

Los atributos de trazo de lápiz se pueden establecer de forma dinámica para así ajustarlos a las preferencias del usuario o a los requisitos de la aplicación.

Aquí dejamos que un usuario elija en una lista de colores de entrada de lápiz.

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0">
        <TextBlock x:Name="Header" 
                   Text="Basic ink customization sample" 
                   VerticalAlignment="Center"
                   Style="{ThemeResource HeaderTextBlockStyle}" 
                   Margin="10,0,0,0" />
        <TextBlock Text="Color:"
                   Style="{StaticResource SubheaderTextBlockStyle}"
                   VerticalAlignment="Center"
                   Margin="50,0,10,0"/>
        <ComboBox x:Name="PenColor"
                  VerticalAlignment="Center"
                  SelectedIndex="0"
                  SelectionChanged="OnPenColorChanged">
            <ComboBoxItem Content="Black"/>
            <ComboBoxItem Content="Red"/>
        </ComboBox>
    </StackPanel>
    <Grid Grid.Row="1">
        <Image Source="Assets\StoreLogo.png" />
        <InkCanvas x:Name="inkCanvas" />
    </Grid>
</Grid>

A continuación, controlamos los cambios en el color seleccionado y actualizamos los atributos de trazo de lápiz en consecuencia.

// Update ink stroke color for new strokes.
private void OnPenColorChanged(object sender, SelectionChangedEventArgs e)
{
    if (inkCanvas != null)
    {
        InkDrawingAttributes drawingAttributes = 
            inkCanvas.InkPresenter.CopyDefaultDrawingAttributes();

        string value = ((ComboBoxItem)PenColor.SelectedItem).Content.ToString();

        switch (value)
        {
            case "Black":
                drawingAttributes.Color = Windows.UI.Colors.Black;
                break;
            case "Red":
                drawingAttributes.Color = Windows.UI.Colors.Red;
                break;
            default:
                drawingAttributes.Color = Windows.UI.Colors.Black;
                break;
        };

        inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
    }
}

Comentarios

Para las aplicaciones universales de Windows, se recomienda usar InkPresenter y el control InkCanvas en lugar de InkManager.

La clase InkPresenter no se puede crear una instancia directamente. Se devuelve como una propiedad de un objeto InkCanvas .

Nota:

La entrada de lápiz estándar (punta de lápiz o punta de borrador/botón) no se modifica con una prestación secundaria, como un botón de lápiz, un botón derecho del mouse o similar (consulte RightDragAction).

De forma predeterminada, la entrada de lápiz estándar y modificada se administra completamente mediante InkPresenter y se representa en InkCanvas como un trazo de lápiz o un trazo de borrado, basado en InkInputProcessingConfiguration.Mode.

La entrada modificada se puede pasar a través de la aplicación para su procesamiento estableciendo InkInputProcessingConfiguration.RightDragAction en InkInputRightDragAction.LeaveUnprocessed.

Toda la entrada se puede pasar a través de la aplicación para su procesamiento estableciendo InkInputProcessingConfiguration.Mode en Ninguno.

Dejar la entrada sin procesar por InkPresenter le permite admitir una experiencia de entrada de lápiz personalizada y una funcionalidad ampliada, como la selección.

Para controlar completamente la entrada de lápiz y representarla en el contexto del dispositivo Direct2D de la aplicación universal de Windows, en lugar del control InkCanvas predeterminado, llame a ActivateCustomDrying antes de cargar InkCanvas. Esto requiere un objeto IInkD2DRenderer para administrar la entrada de lápiz (consulte el ejemplo de entrada de lápiz compleja).

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

Propiedades

HighContrastAdjustment

Obtiene o establece cómo el objeto InkPresenter controla la entrada (estándar y modificada) del control InkCanvas asociado cuando el sistema está en modo de contraste alto.

InputConfiguration

Obtiene los tipos de entrada secundaria que puede procesar el objeto InkPresenter .

InputDeviceTypes

Obtiene o establece el tipo de dispositivo de entrada del que el InkPresenter recopila los datos de entrada para construir y representar un InkStroke. El valor predeterminado es Pen.

InputProcessingConfiguration

Obtiene cómo procesa la entrada el objeto InkPresenter .

IsInputEnabled

Obtiene o establece si la entrada está habilitada para la entrada manuscrita.

StrokeContainer

Obtiene o establece un objeto InkStrokeContainer para almacenar y administrar la colección de objetos InkStroke representados por InkPresenter.

Las modificaciones realizadas en cualquiera de los trazos de lápiz del contenedor de trazos se representan inmediatamente en la superficie de dibujo asociada a InkPresenter.

StrokeInput

Obtiene un objeto InkStrokeInput para administrar eventos de entrada de lápiz.

UnprocessedInput

Obtiene la entrada (estándar o modificada) del control InkCanvas asociado y pasa los datos para el procesamiento personalizado por parte de la aplicación. InkPresenter no procesa los datos.

Nota:

La entrada estándar no se modifica con una prestación secundaria, como un botón de barril de lápiz, un botón derecho del mouse o similar.

Usa InkInputProcessingConfiguration para indicar la entrada que se va a pasar como InkUnprocessedInput a través de la aplicación para el procesamiento personalizado.

Métodos

ActivateCustomDrying()

Indica que la aplicación requiere un control completo de la representación de entrada de lápiz.

De manera predeterminada, la entrada de lápiz se procesa en un subproceso en segundo plano de baja latencia y se representa como "húmeda" mientras se dibuja. Cuando se completa el trazo (lápiz o dedo quitado o botón del mouse), el trazo se procesa en el subproceso de la interfaz de usuario y se representa "seco" en la capa de representación (encima del contenido de la aplicación y reemplazando la tinta húmeda).

Modelos de hospedaje de InkPresenter

InkCanvas

Al llamar a ActivateCustomDrying (antes de cargar InkCanvas), una aplicación crea un objeto InkSynchronizer para personalizar la representación de un trazo de lápiz seco en la clase SurfaceImageSource o VirtualSurfaceImageSource. Por ejemplo, un trazo de lápiz se puede rasterizar e integrar en el contenido de la aplicación, en lugar de hacerlo como una capa de InkCanvas diferente.

InkDesktopHost (Windows 10 versión 1511 y versiones posteriores)

Las aplicaciones Win32 pueden hospedar un InkPresenter en un inkDesktopHost mediante el árbol visual DirectComposition.

Esto requiere un objeto IInkD2DRenderer para administrar la entrada de lápiz (consulte el ejemplo de entrada de lápiz compleja).

CoreInkPresenterHost (Windows 10 Fall Creators Update y versiones más recientes)

Hospede un InkPresenter en su propio Windows.UI.Árbol de composición sin un control InkCanvas asociado.

CopyDefaultDrawingAttributes()

Recupera los inkDrawingAttributes usados por InkPresenter al representar un nuevo InkStroke en un control InkCanvas .

Este método se usa junto con UpdateDefaultDrawingAttributes para establecer atributos de dibujo en tiempo de ejecución.

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

Establece el comportamiento de entrada manuscrita de uno o varios puntos de contacto en el control InkCanvas asociado.

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

Establece los InkDrawingAttributes usados por InkPresenter al representar un nuevo InkStroke en un control InkCanvas .

Este método se usa junto con CopyDefaultDrawingAttributes para establecer atributos de dibujo en tiempo de ejecución.

Eventos

StrokesCollected

Se produce cuando el subproceso de la aplicación procesa uno o varios trazos de lápiz ("húmedo" a "seco").

De forma predeterminada, un trazo de lápiz se procesa en un subproceso de fondo de baja latencia y se representa húmedo a medida que se dibuja. Cuando se completa el trazo (lápiz o dedo quitado o botón del mouse), el trazo se procesa en el subproceso de la interfaz de usuario y se representa en seco en la capa InkCanvas (encima del contenido de la aplicación). Si el subproceso de la interfaz de usuario está ocupado, es posible que se procese más de un trazo de lápiz (recopilado) cuando el subproceso esté disponible.

StrokesErased

Se produce cuando se quita un objeto InkStroke de un control InkCanvas mediante el borrador de lápiz o la punta del lápiz cuando Mode está establecido en Borrar.

Se aplica a

Consulte también