InkPresenter Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 InkPresenterEn 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
- Interactions avec le stylo et le stylet
- Prise en main : Prise en charge de l’entrée manuscrite dans votre application UWP
- Exemple d’analyse d’entrée manuscrite (de base) (C#)
- Exemple de reconnaissance de l’écriture manuscrite manuscrite (C#)
- Enregistrer et charger des traits d’encre à partir d’un fichier ISF (Ink Serialized Format)
- Enregistrer et charger des traits d’encre à partir du Presse-papiers
- Exemple d’emplacement et d’orientation de la barre d’outils d’encre (de base)
- Exemple d’emplacement et d’orientation de la barre d’outils Ink (dynamique)
- Exemple de livre de coloriage
- Exemple de notes de famille
- Exemple d’entrée manuscrite (JavaScript)
- Exemple d’entrée manuscrite simple (C#/C++)
- Exemple d’entrée manuscrite complexe (C++)
- Exemple d’analyse de l’entrée manuscrite