VisualInteractionSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
对象,用于配置相对于视觉对象的 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
- 继承
- 属性
- 实现
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 |
用于创建此 CompositionObject 的 Compositor。 (继承自 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: Auto 、 Always 、 Never 。 启用 X 方向链接时,每当交互 ((如平移) )会使 InteractionTracker 的位置超过其最小或最大 X 位置时,输入将流向最近的上级 VisualInteractionSource。 |
PositionXSourceMode |
X 轴的源模式。 PositionXSourceMode 属性定义如何处理 X 轴上的 VisualInteractionSource 的交互。 有 3 种类型的 InteractionSourceMode可供选择:交互为 Disabled、EnabledWithInertia 和 EnabledWithoutInertia。 必须启用此属性才能允许 VisualInteractionSource 将 X 轴数据发送到 InteractionTracker。 |
PositionYChainingMode |
PositionYChainingMode 属性定义 Y 方向的 InteractionSource 链接行为。 有三种类型的 InteractionChainingMode s: Auto 、 Always 、 Never 。 启用 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可供选择:交互为 Disabled 、 EnabledWithInertia 和 EnabledWithoutInertia 。 必须启用此属性才能允许 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 的指针输入调用此方法。 |