Share via


VisualInteractionSource 类

定义

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

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

[WebHostHidden]
public ref class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.LiftedContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[WebHostHidden]
class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
[WebHostHidden]
class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource
Public Class VisualInteractionSource
Inherits CompositionObject
Implements ICompositionInteractionSource
继承
Object Platform::Object IInspectable CompositionObject VisualInteractionSource
属性
实现

示例

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 的子级)。

属性

Comment

要与 CompositionObject 关联的字符串。

(继承自 CompositionObject)
Compositor

用于创建此 CompositionObject 的 Compositor

(继承自 CompositionObject)
DeltaPosition

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

DeltaScale

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

DispatcherQueue

获取 CompositionObject 的 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 属性定义 X 方向的 InteractionSource 的链行为。 有三种 InteractionChainingMode 类型:

  • Auto
  • 始终
  • Never

启用 X 方向链接时,每当交互 ((例如平移) )将交互跟踪器的位置超过其最小或最大 X 位置时,输入将流向最近的上级 VisualInteractionSource

PositionXSourceMode

X 轴的源模式。

PositionXSourceMode 属性定义如何处理 X 轴上的 VisualInteractionSource 的交互。 有三种 InteractionSourceMode 类型可供选择:

  • 交互已禁用
  • EnabledWithInertia
  • EnabledWithoutInertia

必须启用此属性才能允许 VisualInteractionSource 将 X 轴数据发送到 InteractionTracker

PositionYChainingMode

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

PositionYSourceMode

Y 轴的源模式。

PositionYSourceMode 属性定义如何处理 Y 轴上的 VisualInteractionSource 的交互。 有三种 InteractionSourceMode 类型可供选择:

  • 交互已禁用
  • EnabledWithInertia
  • EnabledWithoutInertia

必须启用此属性才能允许 VisualInteractionSource 将 Y 轴数据发送到 InteractionTracker

Properties

CompositionObject 关联的属性的集合。

(继承自 CompositionObject)
Scale

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

ScaleChainingMode

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

ScaleSourceMode

定义如何处理缩放轴上 VisualInteractionSource 的交互。 有三种 InteractionSourceMode 类型可供选择:

  • 已禁用
  • EnabledWithInertia
  • EnabledWithoutInertia

必须启用此属性才能允许 VisualInteractionSource 将缩放数据发送到 InteractionTracker

ScaleVelocity

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

Source

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

方法

Close()

关闭 CompositionObject 并释放系统资源。

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

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

ConfigureCenterPointYModifiers(IIterable<CompositionConditionalValue>)

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

ConfigureDeltaPositionXModifiers(IIterable<CompositionConditionalValue>)

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

ConfigureDeltaPositionYModifiers(IIterable<CompositionConditionalValue>)

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

ConfigureDeltaScaleModifiers(IIterable<CompositionConditionalValue>)

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

Create(Visual)

创建 VisualInteractionSource 的实例。

CreateFromIVisualElement(IVisualElement)

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

Dispose()

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

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

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

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

使用 对象的指定属性连接动画并启动动画。

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

使用 对象的指定属性连接动画并启动动画。

(继承自 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

启动动画组。

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

(继承自 CompositionObject)
StopAnimation(String)

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

(继承自 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

停止动画组。

(继承自 CompositionObject)
TryGetAnimationController(String)

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

(继承自 CompositionObject)
TryRedirectForManipulation(ExpPointerPoint)

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

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

TryRedirectForManipulation(PointerPoint)

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

重要

仅应使用 Touch 的 PointerDeviceType 调用此方法。

适用于

另请参阅