VisualInteractionSource 类

定义

对象,用于配置相对于视觉对象的 InteractionTracker 的输入。

VisualInteractionSource 设计为仅用于 InteractionTracker ,并定义哪些输入将发送到 InteractionTracker 以驱动其状态和属性。 此类既包含用于命中测试的视觉对象,也包含各种配置属性,其中的手势和输入类型将发送到 InteractionTracker

public ref class VisualInteractionSource sealed : CompositionObject, ICompositionInteractionSource
public ref class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class VisualInteractionSource final : CompositionObject, ICompositionInteractionSource
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
Public NotInheritable Class VisualInteractionSource
Inherits CompositionObject
Implements ICompositionInteractionSource
Public Class VisualInteractionSource
Inherits CompositionObject
Implements ICompositionInteractionSource
继承
Object Platform::Object IInspectable CompositionObject VisualInteractionSource
属性
实现

Windows 要求

设备系列
Windows 10 Anniversary Edition (在 10.0.14393.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v3.0 中引入)

示例

void SetupSimpleInteractionTracker(Visual viewportVisual, Visual contentVisual)
{
  //
  // Create the InteractionTracker and set its min/max position and scale.  These could 
  // also be bound to expressions.  Note: The scrollable area can be changed from either 
  // end to facilitate content updates/virtualization.
  //

  _tracker = InteractionTracker.Create(_compositor);

  _tracker.MaxPosition = new Vector3(
    contentVisual.Size.X - viewportVisual.Size.X,
    contentVisual.Size.Y - viewportVisual.Size.Y,
    0.0f);

  _tracker.MinScale = 0.5f;
  _tracker.MaxScale = 4.0f;


  //
  // Configure the interaction source.  Enable input with inertia on all axis.
  //

  var interactionSource = VisualInteractionSource.Create(viewportVisual);

  interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;
  interactionSource.PositionYSourceMode = InteractionSourceMode.EnabledWithInertia;
  interactionSource.ScaleSourceMode = InteractionSourceMode.EnabledWithInertia;

  _tracker.InteractionSources.Add(interactionSource);


  //
  // Bind the InteractionTracker outputs to the contentVisual.
  //

  var positionExpression = _compositor.CreateExpressionAnimation("-tracker.Position");
  positionExpression.SetReferenceParameter("tracker", _tracker);

  contentVisual.StartAnimation("Offset", positionExpression);


  var scaleExpression = _compositor.CreateExpressionAnimation("Vector3(tracker.Scale, tracker.Scale, 1.0)");

  scaleExpression.SetReferenceParameter("tracker", _tracker);

  contentVisual.StartAnimation("Scale", scaleExpression);
}

注解

VisualInteractionSource 用于定义有关应驱动 InteractionTracker 状态和属性的交互类型的重要属性。 源属性既用于命中测试,也用于手势检测的坐标空间。 因此,请务必使用在操作期间不会处于运动状态的视觉对象。 如果有多个命中测试区域,则可以将多个 VisualInteractionSource 与同一个 InteractionTracker 相关联,但最常见的情况仅为给定 InteractionTracker 需要一个 VisualInteractionSource。

VisualInteractionSource 是用于配置应考虑哪些类型的手势来驱动 InteractionTracker 的类。 位置 X 和 Y 分别与水平和垂直平移相关联。 缩放是通过捏合手势检测到的,通常与缩放相关联。 这三种源模式都可配置为触摸和精确触摸板输入。 可以使用或不使用惯性来启用其中的每一种源模式:

  • 启用惯性表示位置或刻度会在惯性状态期间自然从释放速度内插到无速度。

  • 禁用惯性表示在交互完成后,位置或刻度速度将立即转到 0。 当驱动位置或缩放的输入路由到 InteractionTracker 时,将相应地更新同名的 InteractionTracker 属性。

导轨配置指示如何检测手势。 默认情况下,Rails 处于打开状态,并指示当主要在该轴上启动时,水平或垂直平移将锁定到特定轴。 栏杆属性页上对此进行了更详细的说明。

链接配置指示当 InteractionTracker 在该方向上达到最小值或最大值时,由一个 VisualInteractionSource 处理的输入是否可以流向另一个实体。 此配置将允许输入通过另一个 VisualInteractionSource 链接到另一个 InteractionTracker,或链接到 ScrollViewer(如果 VisualInteractionSource 的源视觉对象是 ScrollViewer 的子级)。

版本历史记录

Windows 版本 SDK 版本 已添加值
1703 15063 ConfigureCenterPointXModifiers
1703 15063 ConfigureCenterPointYModifiers
1703 15063 ConfigureDeltaPositionXModifiers
1703 15063 ConfigureDeltaPositionYModifiers
1703 15063 ConfigureDeltaScaleModifiers
1703 15063 DeltaPosition
1703 15063 DeltaScale
1703 15063 位置
1703 15063 PositionVelocity
1703 15063 缩放
1703 15063 ScaleVelocity
1809 17763 PointerWheelConfig
1903 18362 CreateFromIVisualElement

属性

Comment

要与 CompositionObject 关联的字符串。

(继承自 CompositionObject)
Compositor

用于创建此 CompositionObjectCompositor

(继承自 CompositionObject)
DeltaPosition

在即将到来的帧期间要应用的位置更改量。 默认值为 0。 只能通过表达式/动画读取。

DeltaScale

在即将到来的帧期间要应用的缩放更改量。 乘法。 默认值为 1。 只能通过表达式/动画读取。

Dispatcher

CompositionObject 的调度程序。

(继承自 CompositionObject)
DispatcherQueue

获取 CompostionObject 的 DispatcherQueue

(继承自 CompositionObject)
ImplicitAnimations

附加到此 对象的隐式动画的集合。

(继承自 CompositionObject)
IsPositionXRailsEnabled

指示是否在 x 轴上平移。

IsPositionXRailsEnabled 属性定义何时将 X 轴平移发送到相应的 InteractionTracker 的栏杆配置。 启用后,如果平移的初始部分在相对于 X 轴的特定范围内倾斜,则平移的 Y 分量将被忽略,并被视为完美的水平平移。 在同时启用 X 和 Y 滚动体验的情况下,通常会启用此属性,但也需要可靠、完美的水平平移。

IsPositionYRailsEnabled

指示是否在 y 轴上平移。

IsPositionYRailsEnabled 属性定义将 Y 轴平移发送到相应 InteractionTracker 时的栏杆配置。 启用后,如果平移的初始部分在相对于 Y 轴的特定范围内倾斜,则平移的 X 分量将被忽略,并被视为完美的垂直平移。 此属性通常在同时启用 X 和 Y 滚动体验的情况下启用,但也需要可靠、完美的垂直平移。

ManipulationRedirectionMode

指示应重定向到 InteractionTracker 的输入。

PointerWheelConfig

获取指针滚轮输入的配置。

Position

自交互开始以来,位置变化的总量。 默认值为 0。 只能通过表达式/动画读取。

PositionVelocity

交互中位置的瞬时变化速率(以像素/秒为单位)。 默认值为 0。 仅通过表达式/动画可读。

PositionXChainingMode

PositionXChainingMode 属性定义 InteractionSource 在 X 方向上的链接行为。 有三种类型的 InteractionChainingMode s: AutoAlwaysNever 。 启用 X 方向链接时,每当交互 ((如平移) )会使 InteractionTracker 的位置超过其最小或最大 X 位置时,输入将流向最近的上级 VisualInteractionSource

PositionXSourceMode

X 轴的源模式。

PositionXSourceMode 属性定义如何处理 X 轴上的 VisualInteractionSource 的交互。 有 3 种类型的 InteractionSourceMode可供选择:交互为 Disabled、EnabledWithInertia 和 EnabledWithoutInertia。 必须启用此属性才能允许 VisualInteractionSource 将 X 轴数据发送到 InteractionTracker

PositionYChainingMode

PositionYChainingMode 属性定义 Y 方向的 InteractionSource 链接行为。 有三种类型的 InteractionChainingMode s: AutoAlwaysNever 。 启用 Y 方向链接时,每当交互 ((如平移) )将把 InteractionTracker 的位置超过其最小或最大 Y 位置时,输入将流向最近的上级 VisualInteractionSource

PositionYSourceMode

Y 轴的源模式。

PositionYSourceMode 属性定义如何处理 Y 轴上的 VisualInteractionSource 的交互。 有 3 种类型的 InteractionSourceMode可供选择:交互为 Disabled、EnabledWithInertia 和 EnabledWithoutInertia。 必须启用此属性才能允许 VisualInteractionSource 将 Y 轴数据发送到 InteractionTracker

Properties

CompositionObject 关联的属性的集合。

(继承自 CompositionObject)
Scale

自交互开始以来规模的总百分比差异。 乘法。 默认值为 1。 只能通过表达式/动画读取。

ScaleChainingMode

ScaleChainingMode 属性定义 Scale 方向上 InteractionSource 的链接行为。 有三种类型的 InteractionChainingMode s:Auto、Always、Never。 启用缩放链接后,每当交互 ((如平移) )会使 InteractionTracker 的位置超过其最小或最大刻度位置时,输入将流向最近的上级 VisualInteractionSource

ScaleSourceMode

定义如何处理刻度轴上的 VisualInteractionSource 的交互。 有 3 种类型的 InteractionSourceMode可供选择:交互为 DisabledEnabledWithInertiaEnabledWithoutInertia 。 必须启用此属性才能允许 VisualInteractionSource 将缩放数据发送到 InteractionTracker

ScaleVelocity

交互中缩放的瞬时变化率(以每秒百分比为单位)。 添加剂。 默认值为 0。 仅通过表达式/动画可读。

Source

用于命中测试并定义用于手势识别的坐标空间的视觉对象。

方法

Close()

关闭 CompositionObject 并释放系统资源。

(继承自 CompositionObject)
ConfigureCenterPointXModifiers(IIterable<CompositionConditionalValue>)

采用 CompositionConditionalValue 的有序列表。 在帧中,第一个 CompositionConditionalValue 具有其 “ 。“条件”的计算结果为 true 会将 VisualInteractionSource 提供的缩放 CenterPointX 值替换为其“”。Value”。 如果没有计算结果为 true,则不替换该框架的 CenterPointX。

ConfigureCenterPointYModifiers(IIterable<CompositionConditionalValue>)

采用 CompositionConditionalValue 的有序列表。 在帧中,第一个 CompositionConditionalValue 具有其 “ 。“条件”的计算结果为 true 会将 VisualInteractionSource 提供的缩放 CenterPointY 值替换为其“”。Value”。 如果没有的计算结果为 true,则不替换该框架的 CenterPointY。

ConfigureDeltaPositionXModifiers(IIterable<CompositionConditionalValue>)

采用 CompositionConditionalValue 的有序列表。 在帧中,第一个 CompositionConditionalValue 具有其 “ 。Condition“的计算结果为 true 会将 VisualInteractionSource 提供的 DeltaPositionX 值替换为其””。Value”。 如果 none 的计算结果为 true,则不替换该帧的 DeltaPositionX。

ConfigureDeltaPositionYModifiers(IIterable<CompositionConditionalValue>)

采用 CompositionConditionalValue 的有序列表。 在帧中,第一个 CompositionConditionalValue 具有其 “ 。Condition“的计算结果为 true 会将 VisualInteractionSource 提供的 DeltaPositionY 值替换为其””。Value”。 如果没有计算结果为 true,则不替换该帧的 DeltaPositionY。

ConfigureDeltaScaleModifiers(IIterable<CompositionConditionalValue>)

采用 CompositionConditionalValue 的有序列表。 在帧中,第一个 CompositionConditionalValue 具有其 “ 。条件“的计算结果为 true,将 VisualInteractionSource 提供的 DeltaScale 值替换为其””。Value”。 如果没有计算结果为 true,则 DeltaScale 不会替换该帧。

ConnectAnimation(String, CompositionAnimation)

连接和动画。

(继承自 CompositionObject)
Create(Visual)

创建 VisualInteractionSource 的实例。

CreateFromIVisualElement(IVisualElement)

从实现 IVisualElement 的元素创建 VisualInteractionSource 的实例。

DisconnectAnimation(String)

断开动画的连接。

(继承自 CompositionObject)
Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

(继承自 CompositionObject)
PopulatePropertyInfo(String, AnimationPropertyInfo)

定义可进行动画处理的属性。

(继承自 CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

将动画与 对象的指定属性连接,并启动动画。

(继承自 CompositionObject)
StartAnimation(String, CompositionAnimation)

将动画与 对象的指定属性连接,并启动动画。

(继承自 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

启动动画组。

使用 CompositionObject 上的 StartAnimationGroup 方法可以启动 CompositionAnimationGroup。 组中的所有动画都将在 对象上同时启动。

(继承自 CompositionObject)
StopAnimation(String)

断开动画与指定属性的连接,并停止动画。

(继承自 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

停止动画组。

(继承自 CompositionObject)
TryGetAnimationController(String)

返回指定属性上运行的动画的 AnimationController。

(继承自 CompositionObject)
TryRedirectForManipulation(PointerPoint)

指示应从给定 PointerPoint 开始,将给定指针流的配置操作发送到 InteractionTracker,而不是应用的 UI 线程。

如果手势与 VisualInteractionSource 上的配置匹配,则 TryRedirectForManipulation 使 VisualInteractionSource 能够将指针流重定向到 InteractionTracker。 仅应使用 DeviceType Touch 的指针输入调用此方法。

适用于

另请参阅