Point Structure
Collapse the table of content
Expand the table of content

Point Structure

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Represents an x- and y-coordinate pair in two-dimensional space. Can also represent a logical point for certain property usages.

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)
XMLNS for XAML: Not mapped to an xmlns.

public struct Point : IFormattable
<object property="X,Y"/>
<object property="X Y"/>

XAML Values


The x-coordinate component of this Point.


The y-coordinate component of this Point.

  • Either a space or a comma can be used as the delimiter. See "Point Values in XAML" heading in Remarks below.

  • Some XAML usages use the Point type to represent a logical point, rather than a point in a logical pixel coordinate space. In this case, the values of X and Y are expected to be floating-point values between 0 and 1 inclusive. See "Logical Points" heading in Remarks below.

The Point type exposes the following members.

Public methodPointInitializes a Point structure that contains the specified values.

Public propertyXGets or sets the X-coordinate value of this Point structure.
Public propertyYGets or sets the Y-coordinate value of this Point.

Public methodEquals(Object)Determines whether the specified object is a Point and whether it contains the same values as this Point. (Overrides ValueType.Equals(Object).)
Public methodEquals(Point)Compares two Point structures for equality.
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeReturns the hash code for this Point. (Overrides ValueType.GetHashCode().)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToString()Creates a String representation of this Point. (Overrides ValueType.ToString().)
Public methodToString(IFormatProvider)Creates a String representation of this Point.

Public operatorStatic memberEqualityCompares two Point structures for equality.
Public operatorStatic memberInequalityCompares two Point structures for inequality

Explicit interface implemetationPrivate methodIFormattable.ToStringInfrastructure. For a description of this member, see ToString.

The Point structure is typically used to specify location. Depending on the context, the location might be either in the overall Windows Phone content area frame, or might be within the frame of reference for a specific element.

Point is the type that is returned from a call to the GetPosition method used in event handlers. Also, a Point is used for some properties such as To and From of a PointAnimation. A Point can also be used as the qualifier for performing a hit test.

X and Y for a Point can be non-integer values in terms of permitted values. See "Logical Points" section below for information on certain Point usages that expect and use non-integer values extensively.

Depending on the specific property where the Point is applied, X and Y can possibly be negative. Typically, this results in a Point definition that specifies a coordinate outside of the Windows Phone content area, unless there is additional translation. Many properties, for example EllipseGeometry.RadiusX, will reject a Point with negative X and Y.


The programmatic upper limit for Point values is not PositiveInfinity, it is a lower number (approximately 1,000,000) that is enforced by the Windows Phone native code.

Point Values in XAML

For XAML attributes that take a Point, you can specify an X,Y value pair as a string. The delimiter between X and Y can be either a comma (plus optionally zero or more spaces), or one or more spaces. The common convention for points is to use a comma delimiter. A type converter converts the formatted string to a Point structure.

Using a comma as a separator in an X,Y string can clash with cultural settings where the comma character is the decimal separator if a decimal value is entered as a string. For usages of a Point that are representing points in the absolute coordinate space (usages that are not a logical point), you generally should use integer values for X and Y. When specifying a Point attribute in XAML, use a period (.) for noninteger X or Y values of a Point, even if that is not the convention in either the culture being developed under, or the target culture of the application.

Point structures cannot be declared as resources in a ResourceDictionary.

Logical Points

Some usages of the Point structure in Windows Phone do not relate to coordinate frames of reference directly. Instead, these are logical points, where the value of X,Y are each expected to be between 0 and 1 inclusive. This is a major scenario for why the X,Y values can be floating-point values rather than restricted to integer values. The logical point values are used when specifying certain values that have an X and Y dimension, and the Point values are then mapped to a presentation or behavior where the actual coordinates for presentation or behavior might be specified by a different property. Examples of the logical point usage are the values of a KeySpline, which can be used to pace an animation, and some values of LinearGradientBrush and RadialGradientBrush while using the default RelativeToBoundingBox mode. A property of Point structure that is a logical point mapping might invalidate values less than 0, or greater than 1, but this depends on the specific property.

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

© 2018 Microsoft