InkPresenter Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
- Ereditarietà
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Qui viene illustrato come sovrapporre le annotazioni dell'input penna in un'immagine. Per questo esempio, i dati dell'input penna non vengono acquisiti o salvati da un InkPresenter corrispondente.
<ScrollViewer>
<Grid>
<Image Source="<path>"></Image>
<InkCanvas x:Name="inkCanvas"></InkCanvas>
</Grid>
</ScrollView
Qui configuriamo l'oggetto InkPresenter in modo da interpretare come tratti input penna i dati di input provenienti sia dalla penna che dal mouse. Impostiamo anche alcuni attributi iniziali per il tratto input penna usati per il rendering dei tratti nel controllo 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);
}
Gli attributi del tratto input penna si possono impostare in modo dinamico, per adattarli alle preferenze dell'utente o ai requisiti dell'app.
Qui permettiamo all'utente di scegliere in un elenco di colori dell'input penna.
<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>
Gestiamo quindi le modifiche al colore selezionato e aggiorniamo gli attributi del tratto input penna di conseguenza.
// 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);
}
}
Commenti
Per le app di Windows universali, ti consigliamo di usare InkPresenter e il controllo InkCanvas anziché InkManager.
Non è possibile creare direttamente un'istanza della classe InkPresenter. Viene restituito come proprietà di un oggetto InkCanvas .
Nota
L'input penna standard (suggerimento penna o suggerimento gomma/pulsante) non viene modificato con un invito secondario, ad esempio un pulsante a forma di penna, un pulsante destro del mouse o un pulsante simile (vedere RightDragAction).
Per impostazione predefinita, l'input input penna standard e modificato viene gestito interamente da InkPresenter ed eseguito il rendering in InkCanvas come tratto input penna o come tratto di cancellazione, in base a InkInputProcessingConfiguration.Mode.
L'input modificato può essere passato all'app per l'elaborazione impostando InkInputProcessingConfiguration.RightDragAction su InkInputRightDragAction.LeaveUnprocessed.
Tutti gli input possono essere passati all'app per l'elaborazione impostando InkInputProcessingConfiguration.Mode su Nessuno.
Lasciando l'input non elaborato da InkPresenter , è possibile supportare un'esperienza input penna personalizzata e funzionalità estese, ad esempio la selezione.
Per il controllo completo dell'input penna e per eseguirne il rendering nel contesto di dispositivo Direct2D dell'app di Windows universale, anziché il controllo InkCanvas predefinito, chiamare ActivateCustomDrying prima di caricare InkCanvas. Questo richiede un oggetto IInkD2DRenderer per gestire l'input penna (vedere l'esempio di input penna complesso).
Cronologia delle versioni
Versione di Windows | Versione dell'SDK | Valore aggiunto |
---|---|---|
1703 | 15063 | HighContrastAdjustment |
1803 | 17134 | InputConfiguration |
Proprietà
HighContrastAdjustment |
Ottiene o imposta il modo in cui l'oggetto InkPresenter gestisce l'input (standard e modificato) dal controllo InkCanvas associato quando il sistema è in modalità a contrasto elevato. |
InputConfiguration |
Ottiene i tipi di input secondario che possono essere elaborati dall'oggetto InkPresenter . |
InputDeviceTypes |
Ottiene o imposta il tipo di dispositivo di input da cui vengono raccolti i dati di input da InkPresenter per costruire ed eseguire il rendering di un controllo InkStroke. Il valore predefinito è Penna. |
InputProcessingConfiguration |
Ottiene la modalità di elaborazione dell'input dall'oggetto InkPresenter . |
IsInputEnabled |
Ottiene o imposta un valore che indica se l'input è abilitato per l'input penna. |
StrokeContainer |
Ottiene o imposta un oggetto InkStrokeContainer per archiviare e gestire la raccolta di oggetti InkStroke sottoposti a rendering da InkPresenter. Il rendering delle modifiche apportate a uno qualsiasi dei tratti input penna nel contenitore del tratto viene immediatamente eseguito sulla superficie di disegno associata a InkPresenter. |
StrokeInput |
Ottiene un oggetto InkStrokeInput per la gestione degli eventi di input penna. |
UnprocessedInput |
Ottiene l'input (standard o modificato) dal controllo InkCanvas associato e passa i dati per l'elaborazione personalizzata dall'app. I dati non vengono elaborati da InkPresenter. Nota L'input standard non viene modificato con un invito secondario, ad esempio un pulsante a forma di penna, un pulsante destro del mouse o simile. Usa InkInputProcessingConfiguration per indicare l'input da passare come InkUnprocessedInput all'app per l'elaborazione personalizzata. |
Metodi
ActivateCustomDrying() |
Indica che l'app richiede il controllo completo del rendering dell'input penna. Per impostazione predefinita, l'input penna viene elaborato in un thread in background a bassa latenza e durante il disegno del tratto ne viene eseguito il rendering "intermedio". Quando il tratto viene completato (penna o dito sollevato o pulsante del mouse rilasciato), il tratto viene elaborato sul thread dell'interfaccia utente ed è stato eseguito il rendering "asciutto" al livello di rendering (sopra il contenuto dell'applicazione e sostituendo l'inchiostro bagnato). Modelli di hosting di InkPresenterChiamando ActivateCustomDrying (prima che sia caricato il controllo InkCanvas), un'app crea un oggetto InkSynchronizer per personalizzare la modalità di esecuzione del rendering definitivo di un tratto input penna in un oggetto SurfaceImageSource o VirtualSurfaceImageSource. Ad esempio, un tratto input penna può essere rasterizzato e integrato nel contenuto dell'applicazione anziché come livello InkCanvas separato. InkDesktopHost (Windows 10 versione 1511 e successive) Le app Win32 possono ospitare un InkPresenter in un InkDesktopHost usando la struttura ad albero visuale DirectComposition. Questo richiede un oggetto IInkD2DRenderer per gestire l'input penna (vedere l'esempio di input penna complesso). CoreInkPresenterHost (Windows 10 Fall Creators Update e versioni successive) Ospitare un Oggetto InkPresenter in Windows.UI.Albero di composizione senza un controllo InkCanvas associato. |
CopyDefaultDrawingAttributes() |
Recupera gli InkDrawingAttributes utilizzati da InkPresenter durante il rendering di un nuovo controllo InkStroke in un controllo InkCanvas . Questo metodo viene usato insieme a UpdateDefaultDrawingAttributes per impostare gli attributi di disegno in fase di esecuzione. |
SetPredefinedConfiguration(InkPresenterPredefinedConfiguration) |
Imposta il comportamento di input penna di uno o più punti di contatto nel controllo InkCanvas associato. |
UpdateDefaultDrawingAttributes(InkDrawingAttributes) |
Imposta InkDrawingAttributes utilizzato da InkPresenter durante il rendering di un nuovo controllo InkStroke in un controllo InkCanvas . Questo metodo viene usato insieme a CopyDefaultDrawingAttributes per impostare gli attributi di disegno in fase di esecuzione. |
Eventi
StrokesCollected |
Si verifica quando uno o più tratti input penna vengono elaborati ("bagnato" a "secco") dal thread dell'applicazione. Per impostazione predefinita, un tratto input penna viene elaborato in un thread di sfondo a bassa latenza e ne viene eseguito il rendering mentre viene disegnato. Quando il tratto viene completato (penna o dito sollevato o pulsante del mouse rilasciato), il tratto viene elaborato sul thread dell'interfaccia utente e ne viene eseguito il rendering al livello InkCanvas (sopra il contenuto dell'applicazione). Se il thread dell'interfaccia utente è occupato, è possibile elaborare più tratti input penna (raccolti) quando il thread diventa disponibile. |
StrokesErased |
Si verifica quando un oggetto InkStroke viene rimosso da un controllo InkCanvas usando la gomma della penna o la punta della penna quando Mode è impostato su Cancellazione. |
Si applica a
Vedi anche
- Interazioni tramite penna e stilo
- Introduzione: Supportare l'input penna nell'app UWP
- Esempio di analisi dell'input penna (di base) (C#)
- Esempio di riconoscimento della grafia input penna (C#)
- Salvare e caricare tratti input penna da un file ISF (Ink Serialized Format)
- Salvare e caricare tratti input penna dagli Appunti
- Esempio di orientamento e posizione della barra degli strumenti input penna (di base)
- Esempio di orientamento e posizione della barra degli strumenti input penna (dinamico)
- Esempio di app Coloring Book
- Esempio FamilyNotes
- Esempio di input penna (JavaScript)
- Esempio di input penna semplice (C#/C++)
- Esempio di input penna complesso (C++)
- Esempio di analisi dell'input penna