Point 结构

定义

表示在二维平面中定义点的 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 是具有两个数据属性的对象: xy。 除了 xy 之外,此处点成员中列出的其余 API (或显示在目录中) 不适用于 JavaScript 编程。

XAML 语法说明

Windows 运行时 应用的 XAML 词汇表中,点值广泛用于图形属性和类似的 UI 相关属性。

空格或逗号可用作 XY 值之间的分隔符。 坐标点的常见约定是使用逗号分隔符。

无法将点结构声明为 ResourceDictionary 中的资源。 可能的解决方法是 使用 x:String 资源 ,然后将其注入到使用 XamlReader.Load 分析的字符串中。

某些 XAML 用法使用 Point 类型来表示 逻辑点。 请参阅备注中的“逻辑点”。

点值以及属性如何解释它们

某些 (但并非所有点类型的) 用法都指定坐标空间中的位置。 根据上下文,位置可能位于内容区域的引用框架中,也可能位于特定布局元素的参考范围内。

点的 XY 可以是非整数值。 但是,这可以引入子像素渲染的可能性,这可以更改颜色和抗锯齿沿子像素边缘的任何直线。 这就是 XAML 呈现引擎处理子像素边界的方式。 因此,为了获得最佳结果,请在声明用于 UI 定位和呈现的坐标和形状时使用整数值。

在某些情况下,点的 XY 可以是负数。 通常,这会产生一个 Point,该点指定一个坐标,该坐标有意位于引用框架之外,除非有其他转换。 但是,某些 XAML 属性拒绝将负 XY 的点作为无效值。 值约束通常在属性的引用页中记录。

逻辑点

Windows 运行时应用中点类型的某些用法与坐标引用帧不直接相关。 相反,这些是逻辑点,其中 XY 的值应分别介于 0 和 1(含 1)。 这就是 XY 值支持浮点值而不是受整数值约束的原因之一。 逻辑点值由上下文解释:最终表示形式或行为可能由不同的属性或设置指定或修改。 有时,这些点表示与坐标空间无关的信息。 应用程序中逻辑点概念的示例包括 Animation.KeySpline 的值 (调整动画) 、UIElementRenderTransformOriginLinearGradientBrushGradientStop.Offset 值。

作为逻辑点用法的 Point-value 属性可能会使小于 0 或大于 1 的值失效,但具体内容因属性而异。 值约束通常记录在各个属性的引用页中,而不是点引用中。

点值和 XAML 图形 API

用于定义 XAML UI 的图形元素通常使用点值属性来声明其特征。 例如, EllipseGeometry 使用 Point 值来设置其 Center 属性。

图形元素使用两种模型之一。 某些图形元素派生自 FrameworkElement。 这些元素在放置在 UI 中并分配元素属性时具有定义的呈现行为。 此类元素的示例包括 RectangleWindows.UI.Xaml.Shapes 命名空间中的所有其他类型。 其他图形元素不派生自 FrameworkElement,也没有自己的呈现行为。 相反,这些元素组合在一些具有呈现行为的其他元素上提供属性的值。 换句话说,它们是更全面的图形模型的数据。 例如,用于撰写 Path.Data 的图形元素(如 LineSegment)通常具有 Point-value 属性。

某些图形元素使用单个属性中表示的多个 Point 值。 这些属性使用 PointCollection 类型。 任何采用 PointCollection 的 Windows 运行时 属性都支持 XAML 语法,该语法可分析属性字符串以获取多个点的 XY 值。 使用 PointCollection 的图形属性的一个示例是 Polygon.Points

XAML 输入事件和命中测试中的点值

对于某些输入事件,点值由事件数据返回。 例如, GetCurrentPoint 提供在应用 UI 中发生 Pointer 事件的坐标值。 一般来说,这些 Point 值是指坐标引用的某一帧,了解该引用框架所代表的内容非常重要。 对于输入事件,默认情况下,引用框架是main应用窗口,而不是整个屏幕/显示。 这样就可以在移动或调整窗口大小时使用一致的引用框架。 某些 API(如 GetCurrentPointGetPosition )还提供了一种转换为特定于元素的引用框架的方法,这在处理由单个控件处理的输入事件时非常有用。 有关详细信息,请参阅 处理指针输入

XAML UI 开发还有一个称为 命中测试的概念,你可以在其中使用实用工具方法来测试如果用户在 UI 的特定坐标位置执行指针操作,输入事件将如何报告信息。 为了支持命中测试概念, FindElementsInHostCoordinates 的 2 个签名使用 Point 输入参数, FindSubElementsForTouchTargeting 也一样。 有关详细信息,请参阅鼠标交互

对点值进行动画处理

Windows 运行时提供了一种对使用 Point 作为值的任何属性的值进行动画处理的方法,前提是该属性被实现为依赖属性。 Point 有自己的动画支持类型,因为无法单独对 Point 的 xy 值进行动画处理。 结构不能支持依赖属性。 将 PointAnimation 类型用于 从到动画 ,或使用 PointAnimationUsingKeyFrames 派生类型进行关键帧动画行为。 有关如何对 Point 值进行动画处理以及动画如何在 XAML UI 中工作的详细信息,请参阅 情节提要动画

投影和点成员

如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) 或 Visual C++ 组件扩展 (C++/CX) ,则 Point 具有可用的非数据成员,并且其数据成员公开为读写属性,而不是字段。 请参阅 .NET API 浏览器中的

如果使用 C++/WinRTWindows 运行时 C++ 模板库 (WRL) 进行编程,则只有数据成员字段作为 Point 的成员存在,并且不能使用 .NET 投影的实用工具方法或属性。 C++ 代码可以访问 PointHelper 静态类中提供的类似实用工具方法。

此表显示了 .NET 和 C++ 中可用的等效方法。

.NET () C++ (PointHelper)
点 (双,双) FromCoordinates (Single、Single)

字段

X

该点的水平位置。

Y

该点的垂直位置。

适用于

另请参阅