InkPresenter 类

定义

提供属性、方法和事件,用于管理墨迹输入的输入、处理和呈现, (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
继承
Object Platform::Object IInspectable InkPresenter
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

下面,我们演示如何在图像上覆盖墨迹注释。 对于此示例,墨迹数据不会由相应的 InkPresenter 捕获或保存。

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

我们在此处将 InkPresenter 配置为将来自笔和鼠标的输入数据解释为墨迹笔划。 我们还将设置一些用于将笔划呈现到 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);
}

可以动态设置墨迹笔划属性以适应用户首选项或应用要求。

此处,我们让用户从墨迹颜色列表中进行选择。

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

然后处理对所选颜色的更改并相应地更新墨迹笔划属性。

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

注解

对于通用 Windows 应用,我们建议使用 InkPresenter 和 InkCanvas 控件,而不是 InkManager

无法直接实例化 InkPresenter 类。 它作为 InkCanvas 对象的属性返回。

注意

标准墨迹输入 (笔尖或橡皮擦笔尖/按钮) 未使用辅助功能进行修改,例如笔筒按钮、鼠标右键或类似 (请参阅 RightDragAction) 。

默认情况下,标准和修改墨迹输入完全由 InkPresenter 管理,并基于 InkInputProcessingConfiguration.Mode 以墨迹笔划或擦除笔划的形式呈现到 InkCanvas

通过将 InkInputProcessingConfiguration.RightDragAction 设置为 InkInputRightDragAction.LeaveUnprocessed,可以将修改后的输入传递到应用进行处理。

通过将 InkInputProcessingConfiguration.Mode 设置为 None,可以将所有输入传递到应用进行处理。

使输入不受 InkPresenter 处理,可支持自定义墨迹体验和扩展功能,例如选择。

若要完全控制墨迹输入并将其呈现到通用 Windows 应用的 Direct2D 设备上下文,而不是默认的 InkCanvas 控件,请在加载 InkCanvas 之前调用 ActivateCustomDrying。 这需要 IInkD2DRenderer 对象来管理墨迹输入, (查看 复杂墨迹示例) 。

版本历史记录

Windows 版本 SDK 版本 已添加值
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

属性

HighContrastAdjustment

获取或设置当系统处于高对比度模式时 ,InkPresenter (对象如何处理来自关联 InkCanvas 控件的标准输入和修改) 。

InputConfiguration

获取 InkPresenter 对象可以处理的辅助输入类型。

InputDeviceTypes

获取或设置 InkPresenter 从中收集输入数据以构造和呈现 InkStroke 的输入设备类型。 默认值为 Pen

InputProcessingConfiguration

获取 InkPresenter 对象处理输入的方式。

IsInputEnabled

获取或设置是否为墨迹书写启用输入。

StrokeContainer

获取或设置 InkStrokeContainer 对象,用于存储和管理 InkPresenter 呈现的 InkStroke 对象的集合。

对笔划容器中任何墨迹笔划所做的修改将立即呈现到与 InkPresenter 关联的绘图图面。

StrokeInput

获取用于管理 墨迹输入事件的 InkStrokeInput 对象。

UnprocessedInput

从关联的 InkCanvas 控件获取 (标准或修改) 的输入,并传递数据以供应用进行自定义处理。 InkPresenter 不处理数据。

注意

标准输入不会使用辅助功能进行修改,例如笔筒按钮、鼠标右键或类似项。

使用 InkInputProcessingConfiguration 指示要作为 InkUnprocessedInput 传递到应用进行自定义处理的输入。

方法

ActivateCustomDrying()

指示应用需要完全控制墨迹输入呈现。

默认情况下,墨迹输入在低延迟后台线程上进行处理,并在绘制时呈现“墨迹未干”。 笔划 (笔或手指抬起或鼠标按钮松开) 完成时,笔划在 UI 线程上进行处理,并“干”呈现到应用程序内容上方 (呈现层,并替换湿墨迹) 。

InkPresenter 托管模型

InkCanvas

通过调用 ActivateCustomDrying(在加载 InkCanvas 之前),应用创建 InkSynchronizer 对象以自定义如何向 SurfaceImageSourceVirtualSurfaceImageSource 呈现墨迹已干的笔划墨迹。 例如,笔划墨迹可以光栅化并集成到应用程序内容中,而非作为单独的 InkCanvas 图层。

InkDesktopHost (Windows 10 版本 1511 及更新)

Win32 应用可以使用 DirectComposition 可视化树在 InkDesktopHost 中托管 InkPresenter

这需要 IInkD2DRenderer 对象来管理墨迹输入, (查看 复杂墨迹示例) 。

CoreInkPresenterHost (Windows 10 Fall Creators Update 及较新的)

在自己的 Windows 中托管 InkPresenter。Ui。没有关联的 InkCanvas 控件的合成树。

CopyDefaultDrawingAttributes()

检索 InkPresenterInkCanvas 控件上呈现新 InkStroke 时使用的 InkDrawingAttributes

此方法与 UpdateDefaultDrawingAttributes 结合使用,在运行时设置绘图属性。

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

设置关联 InkCanvas 控件上一个或多个接触点的墨迹书写行为。

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

设置 InkPresenterInkCanvas 控件上呈现新 InkStroke 时使用的 InkDrawingAttributes

此方法与 CopyDefaultDrawingAttributes 结合使用,以在运行时设置绘图属性。

事件

StrokesCollected

当应用程序线程将一个或多个墨迹笔划处理 (“湿”到“干”) 时发生。

默认情况下,墨迹笔划在低延迟的后台线程上进行处理,并在绘制时呈现湿笔划。 笔划 (笔或手指抬起,或者鼠标按钮) 松开时,笔划会在 UI 线程上进行处理,并干涸地呈现到应用程序内容) 上方的 InkCanvas 层 (。 如果 UI 线程正忙,当线程可用时,可能会处理多个墨迹笔划, (收集) 。

StrokesErased

模式设置为“擦除”时,使用笔橡皮擦或笔尖从 InkCanvas 控件中删除 InkStroke 对象时发生。

适用于

另请参阅