InkPresenter Klasse

Definition

Stellt Eigenschaften, Methoden und Ereignisse zum Verwalten von Eingaben, Verarbeitung und Rendering von Freihandeingaben (standard und geändert) für ein InkCanvas-Steuerelement bereit.

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
Vererbung
Object Platform::Object IInspectable InkPresenter
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Hier zeigen wir, wie Freihandanmerkungen in einem Bild überlagert werden. In diesem Beispiel werden Freihanddaten nicht von einem entsprechenden InkPresenter erfasst oder gespeichert.

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

Hier konfigurieren wir InkPresenter, damit Eingabedaten von Stift und Maus als letzte Striche interpretiert werden. Wir legen auch einige anfängliche Freihandstrichattribute fest, die zum Rendern von Strichen in InkCanvas verwendet werden.

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

Attribute für letzte Striche können dynamisch entsprechend den Benutzereinstellungen oder App-Anforderungen festgelegt werden.

Hier kann der Benutzer aus einer Liste von Freihandfarben auswählen.

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

Anschließend behandeln wir Änderungen an der ausgewählten Farbe und aktualisieren die Attribute für letzte Striche entsprechend.

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

Hinweise

Für universelle Windows-Apps wird empfohlen, InkPresenter und das InkCanvas-Steuerelement anstelle von InkManager zu verwenden.

Die InkPresenter-Klasse kann nicht direkt instanziiert werden. Sie wird als Eigenschaft eines InkCanvas-Objekts zurückgegeben.

Hinweis

Die Standard-Freihandeingabe (Stiftspitze oder Radiererspitze/-taste) wird nicht mit einem sekundären Angebot geändert, z. B. einer Stiftfasstaste, einer rechten Maustaste oder ähnlichen (siehe RightDragAction).

Standardmäßig werden sowohl standard- als auch geänderte Freihandeingaben vollständig von InkPresenter verwaltet und in InkCanvas entweder als Freihandstrich oder als Löschstrich gerendert, basierend auf InkInputProcessingConfiguration.Mode.

Geänderte Eingaben können zur Verarbeitung an Ihre App übergeben werden, indem InkInputProcessingConfiguration.RightDragAction auf InkInputRightDragAction.LeaveUnprocessed festgelegt wird.

Alle Eingaben können zur Verarbeitung an Ihre App übergeben werden, indem InkInputProcessingConfiguration.Mode auf None festgelegt wird.

Wenn Eingaben von InkPresenter nicht verarbeitet werden, können Sie eine angepasste Freihandoberfläche und erweiterte Funktionen wie die Auswahl unterstützen.

Um die Freihandeingabe vollständig zu steuern und sie im Direct2D-Gerätekontext Ihrer universellen Windows-App zu rendern, rufen Sie anstelle des InkCanvas-StandardsteuerelementsActivateCustomDrying auf, bevor Sie die InkCanvas laden. Dazu ist ein IInkD2DRenderer-Objekt erforderlich, um die Freihandeingabe zu verwalten (siehe Beispiel für komplexe Freihandeingaben).

Versionsverlauf

Windows-Version SDK-Version Mehrwert
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

Eigenschaften

HighContrastAdjustment

Ruft ab oder legt fest, wie das InkPresenter-Objekt Eingaben (standard und geändert) aus dem zugeordneten InkCanvas-Steuerelement verarbeitet, wenn sich das System im Modus mit hohem Kontrast befindet.

InputConfiguration

Ruft ab, welche Typen sekundärer Eingaben vom InkPresenter-Objekt verarbeitet werden können.

InputDeviceTypes

Ruft den Typ des Eingabegeräts ab, aus dem Eingabedaten vom InkPresenter gesammelt werden, um eine InkStroke zu erstellen und zu rendern, oder legt diesen fest. Der Standardwert ist Pen.

InputProcessingConfiguration

Ruft ab, wie Eingaben vom InkPresenter-Objekt verarbeitet werden.

IsInputEnabled

Ruft ab oder legt fest, ob die Eingabe für Freihandeingaben aktiviert ist.

StrokeContainer

Ruft ein InkStrokeContainer-Objekt zum Speichern und Verwalten der Auflistung von InkStroke-Objekten ab, die von InkPresenter gerendert werden, oder legt dieses fest.

Änderungen an den Freihandstrichen im Strichcontainer werden sofort auf der Zeichnungsoberfläche gerendert, die dem InkPresenter zugeordnet ist.

StrokeInput

Ruft ein InkStrokeInput-Objekt zum Verwalten von Freihandeingabeereignissen ab.

UnprocessedInput

Ruft Eingaben (standard oder geändert) aus dem zugeordneten InkCanvas-Steuerelement ab und übergibt die Daten zur benutzerdefinierten Verarbeitung durch die App. Die Daten werden nicht von InkPresenter verarbeitet.

Hinweis

Die Standardeingabe wird nicht mit einem sekundären Angebot geändert, z. B. einer Stiftfasstaste, einer rechten Maustaste oder ähnlichen.

Verwenden Sie InkInputProcessingConfiguration , um die Eingabe anzugeben, die als InkUnprocessedInput zur benutzerdefinierten Verarbeitung an Ihre App übergeben werden soll.

Methoden

ActivateCustomDrying()

Gibt an, dass Ihre App eine vollständige Steuerung des Renderings der Freihandeingabe erfordert.

Standardmäßig werden Freihandeingaben in einem Hintergrundthread mit geringer Wartezeit verarbeitet und während des Zeichnens „nass“ gerendert. Wenn der Strich abgeschlossen ist (Stift oder Finger angehoben oder Maustaste losgelassen), wird der Strich im UI-Thread verarbeitet und auf der Renderingebene "trocken" gerendert (oberhalb des Anwendungsinhalts und durch Ersetzen der nassen Freihand).

InkPresenter-Hostingmodelle

InkCanvas

Eine App erstellt durch Aufruf von ActivateCustomDrying (vor dem Laden des InkCanvas-Steuerelements) ein InkSynchronizer-Objekt, um zu definieren, wie ein letzter Strich trocken in einer SurfaceImageSource- oder VirtualSurfaceImageSource-Klasse gerendert wird. Beispielsweise kann ein letzter Strich gerastert und in den Anwendungsinhalt integriert werden, statt auf einer separaten InkCanvas-Ebene gerendert zu werden.

InkDesktopHost (Windows 10 Version 1511 und höher)

Win32-Apps können mithilfe der visuellen DirectComposition-Struktur ein InkPresenter in einem InkDesktopHost hosten.

Dazu ist ein IInkD2DRenderer-Objekt erforderlich, um die Freihandeingabe zu verwalten (siehe Beispiel für komplexe Freihandeingaben).

CoreInkPresenterHost (Windows 10 Fall Creators Update und höher)

Hosten Sie eine InkPresenter-Datei in Ihrem eigenen Windows.BENUTZEROBERFLÄCHE.Kompositionsstruktur ohne zugeordnetes InkCanvas-Steuerelement .

CopyDefaultDrawingAttributes()

Ruft die InkDrawingAttributes ab, die von InkPresenter beim Rendern eines neuen InkStroke für ein InkCanvas-Steuerelement verwendet werden.

Diese Methode wird in Verbindung mit UpdateDefaultDrawingAttributes verwendet, um Zeichnungsattribute zur Laufzeit festzulegen.

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

Legt das Freihandverhalten eines oder mehrerer Kontaktpunkte für das zugeordnete InkCanvas-Steuerelement fest.

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

Legt die InkDrawingAttributes fest, die vom InkPresenter beim Rendern eines neuen InkStroke für ein InkCanvas-Steuerelement verwendet werden.

Diese Methode wird in Verbindung mit CopyDefaultDrawingAttributes verwendet, um Zeichnungsattribute zur Laufzeit festzulegen.

Ereignisse

StrokesCollected

Tritt auf, wenn ein oder mehrere Freihandstriche vom Anwendungsthread verarbeitet werden ("nass" bis "trocknen").

Standardmäßig wird ein Freihandstrich in einem Hintergrundthread mit geringer Latenz verarbeitet und beim Zeichnen nass gerendert. Wenn der Strich abgeschlossen ist (Stift oder Finger angehoben oder Maustaste losgelassen), wird der Strich im UI-Thread verarbeitet und auf der InkCanvas-Ebene (oberhalb des Anwendungsinhalts) trocken gerendert. Wenn der UI-Thread ausgelastet ist, werden möglicherweise mehrere Freihandstriche verarbeitet (gesammelt), wenn der Thread verfügbar ist.

StrokesErased

Tritt auf, wenn ein InkStroke-Objekt mithilfe des Stiftlöschers oder der Stiftspitze aus einem InkCanvas-Steuerelement entfernt wird, wenn Mode auf Erasing festgelegt ist.

Gilt für:

Weitere Informationen