Point 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示在二维平面中定义点的 x 和 y 坐标值。
public value class Point
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
struct Point
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
public struct Point
var point = {
x : /* Your value */,
y : /* Your value */
}
Public Structure Point
<object property="X,Y"/>
-or
<object property="X Y"/>
- 继承
-
Point
- 属性
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.FoundationContract (在 v1.0 中引入)
|
注解
点值有时表示应用main窗口平面中的坐标空间,但点值的其他可能解释可能会有所不同,具体取决于使用 Point 值的属性。
Javascript: 在 JavaScript 中,Point 是具有两个数据属性的对象: x 和 y。 除了 x 和 y 之外,此处点成员中列出的其余 API (或显示在目录中) 不适用于 JavaScript 编程。
XAML 语法说明
Windows 运行时 应用的 XAML 词汇表中,点值广泛用于图形属性和类似的 UI 相关属性。
空格或逗号可用作 X 和 Y 值之间的分隔符。 坐标点的常见约定是使用逗号分隔符。
无法将点结构声明为 ResourceDictionary 中的资源。 可能的解决方法是 使用 x:String 资源 ,然后将其注入到使用 XamlReader.Load 分析的字符串中。
某些 XAML 用法使用 Point 类型来表示 逻辑点。 请参阅备注中的“逻辑点”。
点值以及属性如何解释它们
某些 (但并非所有点类型的) 用法都指定坐标空间中的位置。 根据上下文,位置可能位于内容区域的引用框架中,也可能位于特定布局元素的参考范围内。
点的 X 和 Y 可以是非整数值。 但是,这可以引入子像素渲染的可能性,这可以更改颜色和抗锯齿沿子像素边缘的任何直线。 这就是 XAML 呈现引擎处理子像素边界的方式。 因此,为了获得最佳结果,请在声明用于 UI 定位和呈现的坐标和形状时使用整数值。
在某些情况下,点的 X 和 Y 可以是负数。 通常,这会产生一个 Point,该点指定一个坐标,该坐标有意位于引用框架之外,除非有其他转换。 但是,某些 XAML 属性拒绝将负 X 或 Y 的点作为无效值。 值约束通常在属性的引用页中记录。
逻辑点
Windows 运行时应用中点类型的某些用法与坐标引用帧不直接相关。 相反,这些是逻辑点,其中 X 和 Y 的值应分别介于 0 和 1(含 1)。 这就是 X 和 Y 值支持浮点值而不是受整数值约束的原因之一。 逻辑点值由上下文解释:最终表示形式或行为可能由不同的属性或设置指定或修改。 有时,这些点表示与坐标空间无关的信息。 应用程序中逻辑点概念的示例包括 Animation.KeySpline 的值 (调整动画) 、UIElement 的 RenderTransformOrigin 和 LinearGradientBrush 的 GradientStop.Offset 值。
作为逻辑点用法的 Point-value 属性可能会使小于 0 或大于 1 的值失效,但具体内容因属性而异。 值约束通常记录在各个属性的引用页中,而不是点引用中。
点值和 XAML 图形 API
用于定义 XAML UI 的图形元素通常使用点值属性来声明其特征。 例如, EllipseGeometry 使用 Point 值来设置其 Center 属性。
图形元素使用两种模型之一。 某些图形元素派生自 FrameworkElement。 这些元素在放置在 UI 中并分配元素属性时具有定义的呈现行为。 此类元素的示例包括 Rectangle 和 Windows.UI.Xaml.Shapes 命名空间中的所有其他类型。 其他图形元素不派生自 FrameworkElement,也没有自己的呈现行为。 相反,这些元素组合在一些具有呈现行为的其他元素上提供属性的值。 换句话说,它们是更全面的图形模型的数据。 例如,用于撰写 Path.Data 的图形元素(如 LineSegment)通常具有 Point-value 属性。
某些图形元素使用单个属性中表示的多个 Point 值。 这些属性使用 PointCollection 类型。 任何采用 PointCollection 的 Windows 运行时 属性都支持 XAML 语法,该语法可分析属性字符串以获取多个点的 X 和 Y 值。 使用 PointCollection 的图形属性的一个示例是 Polygon.Points。
XAML 输入事件和命中测试中的点值
对于某些输入事件,点值由事件数据返回。 例如, GetCurrentPoint 提供在应用 UI 中发生 Pointer 事件的坐标值。 一般来说,这些 Point 值是指坐标引用的某一帧,了解该引用框架所代表的内容非常重要。 对于输入事件,默认情况下,引用框架是main应用窗口,而不是整个屏幕/显示。 这样就可以在移动或调整窗口大小时使用一致的引用框架。 某些 API(如 GetCurrentPoint 和 GetPosition )还提供了一种转换为特定于元素的引用框架的方法,这在处理由单个控件处理的输入事件时非常有用。 有关详细信息,请参阅 处理指针输入。
XAML UI 开发还有一个称为 命中测试的概念,你可以在其中使用实用工具方法来测试如果用户在 UI 的特定坐标位置执行指针操作,输入事件将如何报告信息。 为了支持命中测试概念, FindElementsInHostCoordinates 的 2 个签名使用 Point 输入参数, FindSubElementsForTouchTargeting 也一样。 有关详细信息,请参阅鼠标交互。
对点值进行动画处理
Windows 运行时提供了一种对使用 Point 作为值的任何属性的值进行动画处理的方法,前提是该属性被实现为依赖属性。 Point 有自己的动画支持类型,因为无法单独对 Point 的 x 和 y 值进行动画处理。 结构不能支持依赖属性。 将 PointAnimation 类型用于 从到动画 ,或使用 PointAnimationUsingKeyFrames 派生类型进行关键帧动画行为。 有关如何对 Point 值进行动画处理以及动画如何在 XAML UI 中工作的详细信息,请参阅 情节提要动画。
投影和点成员
如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) 或 Visual C++ 组件扩展 (C++/CX) ,则 Point 具有可用的非数据成员,并且其数据成员公开为读写属性,而不是字段。 请参阅 .NET API 浏览器中的 点 。
如果使用 C++/WinRT 或 Windows 运行时 C++ 模板库 (WRL) 进行编程,则只有数据成员字段作为 Point 的成员存在,并且不能使用 .NET 投影的实用工具方法或属性。 C++ 代码可以访问 PointHelper 静态类中提供的类似实用工具方法。
此表显示了 .NET 和 C++ 中可用的等效方法。
.NET (点) | C++ (PointHelper) |
---|---|
点 (双,双) | FromCoordinates (Single、Single) |
字段
X |
该点的水平位置。 |
Y |
该点的垂直位置。 |