InkPresenter 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 InkPresenterPublic NotInheritable Class 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 托管模型通过调用 ActivateCustomDrying(在加载 InkCanvas 之前),应用创建 InkSynchronizer 对象以自定义如何向 SurfaceImageSource 或 VirtualSurfaceImageSource 呈现墨迹已干的笔划墨迹。 例如,笔划墨迹可以光栅化并集成到应用程序内容中,而非作为单独的 InkCanvas 图层。 InkDesktopHost (Windows 10 版本 1511 及更新) Win32 应用可以使用 DirectComposition 可视化树在 InkDesktopHost 中托管 InkPresenter。 这需要 IInkD2DRenderer 对象来管理墨迹输入, (查看 复杂墨迹示例) 。 CoreInkPresenterHost (Windows 10 Fall Creators Update 及较新的) 在自己的 Windows 中托管 InkPresenter。Ui。没有关联的 InkCanvas 控件的合成树。 | 
| CopyDefaultDrawingAttributes() | 检索 InkPresenter 在 InkCanvas 控件上呈现新 InkStroke 时使用的 InkDrawingAttributes。 此方法与 UpdateDefaultDrawingAttributes 结合使用,在运行时设置绘图属性。 | 
| SetPredefinedConfiguration(InkPresenterPredefinedConfiguration) | 设置关联 InkCanvas 控件上一个或多个接触点的墨迹书写行为。 | 
| UpdateDefaultDrawingAttributes(InkDrawingAttributes) | 设置 InkPresenter 在 InkCanvas 控件上呈现新 InkStroke 时使用的 InkDrawingAttributes。 此方法与 CopyDefaultDrawingAttributes 结合使用,以在运行时设置绘图属性。 | 
事件
| StrokesCollected | 当应用程序线程将一个或多个墨迹笔划处理 (“湿”到“干”) 时发生。 默认情况下,墨迹笔划在低延迟的后台线程上进行处理,并在绘制时呈现湿笔划。 笔划 (笔或手指抬起,或者鼠标按钮) 松开时,笔划会在 UI 线程上进行处理,并干涸地呈现到应用程序内容) 上方的 InkCanvas 层 (。 如果 UI 线程正忙,当线程可用时,可能会处理多个墨迹笔划, (收集) 。 | 
| StrokesErased |