InkPresenter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 InkPresenterAl 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
- Interacciones de pluma y lápiz
- Introducción: Compatibilidad con la entrada de lápiz en la aplicación para UWP
- Ejemplo de análisis de lápiz (básico) (C#)
- Ejemplo de reconocimiento de escritura a mano de lápiz (C#)
- Guardar y cargar trazos de lápiz desde un archivo de formato serializado de lápiz (ISF)
- Guardar y cargar trazos de lápiz desde el Portapapeles
- Ejemplo de orientación y ubicación de la barra de herramientas de lápiz (básico)
- Muestra de orientación y ubicación de la barra de herramientas de lápiz (dinámica)
- Muestra de libro para colorear
- Muestra de notas familiares
- Ejemplo de entrada manuscrita (JavaScript)
- Ejemplo de entrada manuscrita simple (C#/C++)
- Ejemplo complejo de entrada manuscrita (C++)
- Ejemplo de análisis de entrada de lápiz