InkPresenter Classe

Définition

Fournit des propriétés, des méthodes et des événements permettant de gérer l’entrée, le traitement et le rendu de l’entrée manuscrite (standard et modifiée) pour un contrôle 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
Héritage
Object Platform::Object IInspectable InkPresenter
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Ici, nous montrons comment superposer des annotations manuscrites sur une image. Pour cet exemple, les données manuscrites ne sont pas capturées ou enregistrées par un InkPresenter correspondant.

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

Ici, l’élément InkPresenter est configuré pour interpréter les données d’entrée de stylet et de souris sous forme de traits d’encre. Nous définissons également des attributs de trait d’encre initiaux utilisés pour restituer les traits dans l’élément 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);
}

Les attributs de traits d’encre peuvent être définis de manière dynamique pour s’adapter aux préférences de l’utilisateur ou aux exigences de l’application.

Ici, nous laissons un utilisateur choisir parmi une liste de couleurs d’encre.

<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>

Nous traitons ensuite les modifications de manière à tenir compte de la couleur sélectionnée et actualisons les attributs de traits d’encre en conséquence.

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

Remarques

Pour les applications Windows universelles, nous vous recommandons d’utiliser InkPresenter et le contrôle InkCanvas au lieu d’InkManager.

La classe InkPresenter ne peut pas être instanciée directement. Elle est retournée en tant que propriété d’un objet InkCanvas .

Notes

L’entrée manuscrite standard (pointe du stylet ou pointe/bouton de gomme) n’est pas modifiée avec une affordance secondaire, telle qu’un bouton de canon de stylet, un bouton droit de la souris ou similaire (voir RightDragAction).

Par défaut, l’entrée manuscrite standard et modifiée est entièrement gérée par InkPresenter et rendue dans InkCanvas sous la forme d’un trait d’encre ou d’un trait d’effacement, en fonction de InkInputProcessingConfiguration.Mode.

L’entrée modifiée peut être transmise à votre application pour traitement en définissant InkInputProcessingConfiguration.RightDragAction sur InkInputRightDragAction.LeaveUnprocessed.

Toutes les entrées peuvent être transmises à votre application pour traitement en définissant InkInputProcessingConfiguration.Mode sur None.

Le fait de laisser l’entrée non traitées par InkPresenter vous permet de prendre en charge une expérience d’entrée manuscrite personnalisée et des fonctionnalités étendues telles que la sélection.

Pour un contrôle complet de l’entrée manuscrite et pour la restituer dans le contexte d’appareil Direct2D de votre application Windows universelle, au lieu du contrôle InkCanvas par défaut, appelez ActivateCustomDrying avant de charger InkCanvas. Cela nécessite un objet IInkD2DRenderer pour gérer l’entrée manuscrite (voir l’exemple d’entrée manuscrite complexe).

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

Propriétés

HighContrastAdjustment

Obtient ou définit la façon dont l’objet InkPresenter gère l’entrée (standard et modifiée) à partir du contrôle InkCanvas associé lorsque le système est en mode de contraste élevé.

InputConfiguration

Obtient les types d’entrée secondaire qui peuvent être traités par l’objet InkPresenter .

InputDeviceTypes

Obtient ou définit le type de périphérique d’entrée à partir duquel les données d’entrée sont collectées par InkPresenter pour construire et afficher un InkStroke. La valeur par défaut est Stylet.

InputProcessingConfiguration

Obtient la façon dont l’entrée est traitée par l’objet InkPresenter .

IsInputEnabled

Obtient ou définit si l’entrée est activée pour l’entrée manuscrite.

StrokeContainer

Obtient ou définit un objet InkStrokeContainer pour stocker et gérer la collection d’objets InkStroke rendus par InkPresenter.

Les modifications apportées à l’un des traits d’encre dans le conteneur de traits sont immédiatement rendues à la surface de dessin associée à InkPresenter.

StrokeInput

Obtient un objet InkStrokeInput pour la gestion des événements d’entrée manuscrite.

UnprocessedInput

Obtient une entrée (standard ou modifiée) à partir du contrôle InkCanvas associé et transmet les données pour un traitement personnalisé par l’application. Les données ne sont pas traitées par InkPresenter.

Notes

L’entrée standard n’est pas modifiée avec une affordance secondaire, telle qu’un bouton de canon de stylet, un bouton droit de la souris ou similaire.

Utilisez InkInputProcessingConfiguration pour indiquer l’entrée à transmettre en tant que InkUnprocessedInput à votre application pour un traitement personnalisé.

Méthodes

ActivateCustomDrying()

Indique que votre application nécessite un contrôle total du rendu d’entrée manuscrite.

Par défaut, l’entrée manuscrite est traitée sur un thread d’arrière-plan de faible latence et restituée « humide » comme elle est dessinée. Une fois le trait terminé (stylet ou doigt levé, ou bouton de la souris relâché), le trait est traité sur le thread d’interface utilisateur et rendu « sec » dans la couche de rendu (au-dessus du contenu de l’application et en remplaçant l’encre humide).

Modèles d’hébergement InkPresenter

InkCanvas

En appelant ActivateCustomDrying (avant le chargement de InkCanvas), une application crée un objet InkSynchronizer pour personnaliser la manière dont un trait d’encre est restitué sec à un élément SurfaceImageSource ou VirtualSurfaceImageSource. Par exemple, un trait d’encre pourrait être rastérisé et intégré au contenu d’application plutôt que d’être intégré sous forme de couche InkCanvas distincte.

InkDesktopHost (Windows 10 version 1511 et ultérieure)

Les applications Win32 peuvent héberger un InkPresenter dans un InkDesktopHost à l’aide de l’arborescence visuelle DirectComposition.

Cela nécessite un objet IInkD2DRenderer pour gérer l’entrée manuscrite (voir l’exemple d’entrée manuscrite complexe).

CoreInkPresenterHost (Windows 10 Fall Creators Update et versions ultérieures)

Hébergez un InkPresenter dans votre propre Windows.UI.Arborescence de composition sans contrôle InkCanvas associé.

CopyDefaultDrawingAttributes()

Récupère les attributs InkDrawingAttributes utilisés par InkPresenter lors du rendu d’un nouvel InkStroke sur un contrôle InkCanvas .

Cette méthode est utilisée conjointement avec UpdateDefaultDrawingAttributes pour définir des attributs de dessin au moment de l’exécution.

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

Définit le comportement d’entrée manuscrite d’un ou plusieurs points de contact sur le contrôle InkCanvas associé.

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

Définit les attributs InkDrawingAttributes utilisés par InkPresenter lors du rendu d’un nouvel InkStroke sur un contrôle InkCanvas .

Cette méthode est utilisée conjointement avec CopyDefaultDrawingAttributes pour définir des attributs de dessin au moment de l’exécution.

Événements

StrokesCollected

Se produit lorsqu’un ou plusieurs traits d’encre sont traités (« humides » à « secs ») par le thread d’application.

Par défaut, un trait d’encre est traité sur un thread d’arrière-plan à faible latence et rendu humide à mesure qu’il est dessiné. Une fois le trait terminé (stylet ou doigt levé, ou bouton de la souris relâché), le trait est traité sur le thread d’interface utilisateur et rendu sec dans la couche InkCanvas (au-dessus du contenu de l’application). Si le thread d’interface utilisateur est occupé, plusieurs traits d’encre peuvent être traités (collectés) lorsque le thread devient disponible.

StrokesErased

Se produit lorsqu’un objet InkStroke est supprimé d’un contrôle InkCanvas à l’aide de la gomme de stylet ou de la pointe du stylet lorsque Mode est défini sur Effacement.

S’applique à

Voir aussi