InkPresenter Classe

Definizione

Fornisce proprietà, metodi ed eventi per la gestione dell'input, dell'elaborazione e del rendering dell'input penna (standard e modificato) per un controllo 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
Ereditarietà
Object Platform::Object IInspectable InkPresenter
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 InkPresenter

InkCanvas

Chiamando 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