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