# Point Struct

## Definition

Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional plane.

``public value class Point : IEquatable<System::Drawing::Point>``
``public value class Point``
``public struct Point : IEquatable<System.Drawing.Point>``
``public struct Point``
``````[System.ComponentModel.TypeConverter(typeof(System.Drawing.PointConverter))]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public struct Point``````
``type Point = struct``
``````[<System.ComponentModel.TypeConverter(typeof(System.Drawing.PointConverter))>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type Point = struct``````
``````Public Structure Point
Implements IEquatable(Of Point)``````
``Public Structure Point``
Inheritance
Attributes
Implements

## Examples

The following code example creates points and sizes using several of the overloaded operators defined for these types. It also demonstrates how to use the SystemPens class.

This example is designed to be used with Windows Forms. Create a form that contains a Button named `subtractButton`. Paste the code into the form and call the `CreatePointsAndSizes` method from the form's Paint event-handling method, passing `e` as PaintEventArgs.

``````void CreatePointsAndSizes( PaintEventArgs^ e )
{
// Create the starting point.
Point startPoint = Point(subtractButton->Size);

// Use the addition operator to get the end point.
Point endPoint = startPoint + System::Drawing::Size( 140, 150 );

// Draw a line between the points.
e->Graphics->DrawLine( SystemPens::Highlight, startPoint, endPoint );

// Convert the starting point to a size and compare it to the
// subtractButton size.
System::Drawing::Size buttonSize = (System::Drawing::Size)startPoint;
if ( buttonSize == subtractButton->Size )
{
e->Graphics->DrawString( "The sizes are equal.", gcnew System::Drawing::Font( this->Font,FontStyle::Italic ), Brushes::Indigo, 10.0F, 65.0F );
}
}
``````
``````private void CreatePointsAndSizes(PaintEventArgs e)
{

// Create the starting point.
Point startPoint = new Point(subtractButton.Size);

// Use the addition operator to get the end point.
Point endPoint = startPoint + new Size(140, 150);

// Draw a line between the points.
e.Graphics.DrawLine(SystemPens.Highlight, startPoint, endPoint);

// Convert the starting point to a size and compare it to the
// subtractButton size.
Size buttonSize = (Size)startPoint;
if (buttonSize == subtractButton.Size)

// If the sizes are equal, tell the user.
{
e.Graphics.DrawString("The sizes are equal.",
new Font(this.Font, FontStyle.Italic),
Brushes.Indigo, 10.0F, 65.0F);
}
}
``````
``````Private Sub CreatePointsAndSizes(ByVal e As PaintEventArgs)

' Create the starting point.
Dim startPoint As New Point(subtractButton.Size)

' Use the addition operator to get the end point.
Dim endPoint As Point = Point.op_Addition(startPoint, _
New Size(140, 150))

' Draw a line between the points.
e.Graphics.DrawLine(SystemPens.Highlight, startPoint, endPoint)

' Convert the starting point to a size and compare it to the
' subtractButton size.
Dim buttonSize As Size = Point.op_Explicit(startPoint)
If (Size.op_Equality(buttonSize, subtractButton.Size)) Then

' If the sizes are equal, tell the user.
e.Graphics.DrawString("The sizes are equal.", _
New Font(Me.Font, FontStyle.Italic), _
Brushes.Indigo, 10.0F, 65.0F)
End If

End Sub
``````

## Remarks

To convert a Point to a PointF, use Implicit.

## Constructors

 Initializes a new instance of the Point struct using coordinates specified by an integer value. Initializes a new instance of the Point struct with the specified coordinates. Initializes a new instance of the Point struct from a Size.

## Fields

 Represents a Point that has X and Y values set to zero.

## Properties

 Gets a value indicating whether this Point is empty. Gets or sets the x-coordinate of this Point. Gets or sets the y-coordinate of this Point.

## Methods

 Adds the specified Size to the specified Point. Converts the specified PointF to a Point by rounding the values of the PointF to the next higher integer values. Specifies whether this point instance contains the same coordinates as the specified object. Specifies whether this point instance contains the same coordinates as another point. Returns a hash code for this Point. Translates this Point by the specified amount. Translates this Point by the specified Point. Converts the specified PointF to a Point object by rounding the PointF values to the nearest integer. Returns the result of subtracting specified Size from the specified Point. Converts this Point to a human-readable string. Converts the specified PointF to a Point by truncating the values of the PointF.

## Operators

 Translates a Point by a given Size. Compares two Point objects. The result specifies whether the values of the X and Y properties of the two Point objects are equal. Converts the specified Point structure to a Size structure. Converts the specified Point structure to a PointF structure. Compares two Point objects. The result specifies whether the values of the X or Y properties of the two Point objects are unequal. Translates a Point by the negative of a given Size.