Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
rect (Structures)
 
.
Summary
The RECT structure defines the coordinates of the upper-left and lower-right corners of a rectangle.

C# Signature:

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
   public int Left, Top, Right, Bottom;

   public RECT(int left, int top, int right, int bottom)
   {
     Left = left;
     Top = top;
     Right = right;
     Bottom = bottom;
   }

   public RECT(System.Drawing.Rectangle r) : this(r.Left, r.Top, r.Right, r.Bottom) { }

   public int X
   {
     get { return Left; }
     set { Right -= (Left - value); Left = value; }
   }

   public int Y
   {
     get { return Top; }
     set { Bottom -= (Top - value); Top = value; }
   }

   public int Height
   {
     get { return Bottom - Top; }
     set { Bottom = value + Top; }
   }

   public int Width
   {
     get { return Right - Left; }
     set { Right = value + Left; }
   }

   public System.Drawing.Point Location
   {
     get { return new System.Drawing.Point(Left, Top); }
     set { X = value.X; Y = value.Y; }
   }

   public System.Drawing.Size Size
   {
     get { return new System.Drawing.Size(Width, Height); }
     set { Width = value.Width; Height = value.Height; }
   }

   public static implicit operator System.Drawing.Rectangle(RECT r)
   {
     return new System.Drawing.Rectangle(r.Left, r.Top, r.Width, r.Height);
   }

   public static implicit operator RECT(System.Drawing.Rectangle r)
   {
     return new RECT(r);
   }

   public static bool operator ==(RECT r1, RECT r2)
   {
     return r1.Equals(r2);
   }

   public static bool operator !=(RECT r1, RECT r2)
   {
     return !r1.Equals(r2);
   }

   public bool Equals(RECT r)
   {
     return r.Left == Left && r.Top == Top && r.Right == Right && r.Bottom == Bottom;
   }

   public override bool Equals(object obj)
   {
     if (obj is RECT)
       return Equals((RECT)obj);
     else if (obj is System.Drawing.Rectangle)
       return Equals(new RECT((System.Drawing.Rectangle)obj));
     return false;
   }

   public override int GetHashCode()
   {
     return ((System.Drawing.Rectangle)this).GetHashCode();
   }

   public override string ToString()
   {
     return string.Format(System.Globalization.CultureInfo.CurrentCulture, "{{Left={0},Top={1},Right={2},Bottom={3}}}", Left, Top, Right, Bottom);
   }
}

VB.NET Signature:

<StructLayout(LayoutKind.Sequential)> _
Public Structure RECT
    Private _Left As Integer, _Top As Integer, _Right As Integer, _Bottom As Integer

    Public Sub New(ByVal Rectangle As Rectangle)
        Me.New(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom)
    End Sub
    Public Sub New(ByVal Left As Integer, ByVal Top As Integer, ByVal Right As Integer, ByVal Bottom As Integer)
        _Left = Left
        _Top = Top
        _Right = Right
        _Bottom = Bottom
    End Sub

    Public Property X As Integer
        Get
        Return _Left
        End Get
        Set(ByVal value As Integer)
        _Right = _Right - _Left + value
        _Left = value
        End Set
    End Property
    Public Property Y As Integer
        Get
        Return _Top
        End Get
        Set(ByVal value As Integer)
        _Bottom = _Bottom - _Top + value
        _Top = value
        End Set
    End Property
    Public Property Left As Integer
        Get
        Return _Left
        End Get
        Set(ByVal value As Integer)
        _Left = value
        End Set
    End Property
    Public Property Top As Integer
        Get
        Return _Top
        End Get
        Set(ByVal value As Integer)
        _Top = value
        End Set
    End Property
    Public Property Right As Integer
        Get
        Return _Right
        End Get
        Set(ByVal value As Integer)
        _Right = value
        End Set
    End Property
    Public Property Bottom As Integer
        Get
        Return _Bottom
        End Get
        Set(ByVal value As Integer)
        _Bottom = value
        End Set
    End Property
    Public Property Height() As Integer
        Get
        Return _Bottom - _Top
        End Get
        Set(ByVal value As Integer)
        _Bottom = value + _Top
        End Set
    End Property
    Public Property Width() As Integer
        Get
        Return _Right - _Left
        End Get
        Set(ByVal value As Integer)
        _Right = value + _Left
        End Set
    End Property
    Public Property Location() As Point
        Get
        Return New Point(Left, Top)
        End Get
        Set(ByVal value As Point)
        _Right = _Right - _Left + value.X
        _Bottom = _Bottom - _Top + value.Y
        _Left = value.X
        _Top = value.Y
        End Set
    End Property
    Public Property Size() As Size
        Get
        Return New Size(Width, Height)
        End Get
        Set(ByVal value As Size)
        _Right = value.Width + _Left
        _Bottom = value.Height + _Top
        End Set
    End Property

    Public Shared Widening Operator CType(ByVal Rectangle As RECT) As Rectangle
        Return New Rectangle(Rectangle.Left, Rectangle.Top, Rectangle.Width, Rectangle.Height)
    End Operator
    Public Shared Widening Operator CType(ByVal Rectangle As Rectangle) As RECT
        Return New RECT(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom)
    End Operator
    Public Shared Operator =(ByVal Rectangle1 As RECT, ByVal Rectangle2 As RECT) As Boolean
        Return Rectangle1.Equals(Rectangle2)
    End Operator
    Public Shared Operator <>(ByVal Rectangle1 As RECT, ByVal Rectangle2 As RECT) As Boolean
        Return Not Rectangle1.Equals(Rectangle2)
    End Operator

    Public Overrides Function ToString() As String
        Return "{Left: " & _Left & "; " & "Top: " & _Top & "; Right: " & _Right & "; Bottom: " & _Bottom & "}"
    End Function

    Public Overloads Function Equals(ByVal Rectangle As RECT) As Boolean
        Return Rectangle.Left = _Left AndAlso Rectangle.Top = _Top AndAlso Rectangle.Right = _Right AndAlso Rectangle.Bottom = _Bottom
    End Function
    Public Overloads Overrides Function Equals(ByVal [Object] As Object) As Boolean
        If TypeOf [Object] Is RECT Then
        Return Equals(DirectCast([Object], RECT))
        ElseIf TypeOf [Object] Is Rectangle Then
        Return Equals(New RECT(DirectCast([Object], Rectangle)))
        End If

        Return False
    End Function
End Structure

VB Signature

Public Type RECT
     Left As Long
     Top As Long
     Right As Long
     Bottom As Long
End Type

User-Defined Types:

None.

Notes:

The Win32 RECT structure is not compatible with the .NET System.Drawing.Rectangle structure.

The RECT structure has left, top, right and bottom members,

but the System.Drawing.Rectangle structure has left, top, width and height members internally.

This import is required for VB.NET if missing:

Imports System.Runtime.InteropServices

Add a reference to System.Drawing to use this.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

TODO

Documentation
RECT on MSDN

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • alternate definitions?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions