Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Verständnis bon Class TRect Definition (https://www.delphipraxis.net/192096-verstaendnis-bon-class-trect-definition.html)

bernhard_LA 20. Mär 2017 08:14


Verständnis bon Class TRect Definition
 
wie steuere ich denn ob TRect nur durch 2 TPoints oder 4 Integer Werte aufgespannt wird ?



Delphi-Quellcode:
  TRect = record
  private
    function GetWidth: Integer;
    procedure SetWidth(const Value: Integer);
    function GetHeight: Integer;
    procedure SetHeight(const Value: Integer);
    function GetSize: TSize;
    procedure SetSize(const Value: TSize);
    function GetLocation: TPoint;
  public
    constructor Create(const Origin: TPoint); overload;                             // empty rect at given origin
    constructor Create(const Origin: TPoint; Width, Height: Integer); overload;     // at TPoint of origin with width and height
    constructor Create(const Left, Top, Right, Bottom: Integer); overload;          // at x, y with width and height
    constructor Create(const P1, P2: TPoint; Normalize: Boolean = False); overload; // with corners specified by p1 and p2
    constructor Create(const R: TRect; Normalize: Boolean = False); overload;
    class operator Equal(const Lhs, Rhs: TRect): Boolean;
    class operator NotEqual(const Lhs, Rhs: TRect): Boolean;
    class operator Add(const Lhs, Rhs: TRect): TRect;
    class operator Multiply(const Lhs, Rhs: TRect): TRect;
    class function Empty: TRect; inline; static;
    procedure NormalizeRect;
    function IsEmpty: Boolean;
    function Contains(const Pt: TPoint): Boolean; overload;
    function Contains(const R: TRect): Boolean; overload;
    function IntersectsWith(const R: TRect): Boolean;
    class function Intersect(const R1: TRect; const R2: TRect): TRect; overload; static;
    procedure Intersect(const R: TRect); overload;
    class function Union(const R1: TRect; const R2: TRect): TRect; overload; static;
    procedure Union(const R: TRect); overload;
    class function Union(const Points: Array of TPoint): TRect; overload; static;
    procedure Offset(const DX, DY: Integer); overload;
    procedure Offset(const Point: TPoint); overload;
...
...
 case Integer of
    0: (Left, Top, Right, Bottom: FixedInt);
    1: (TopLeft, BottomRight: TPoint);
  end;

Rollo62 20. Mär 2017 08:33

AW: Verständnis bon Class TRect Definition
 
Delphi-Quellcode:
constructor Create(const Left, Top, Right, Bottom: Integer); overload; // at x, y with width and height
constructor Create(const P1, P2: TPoint; Normalize: Boolean = False); overload; // with corners specified by p1 and p2
Macht das doch.

x = Left, y = Top, x+Width = Right, y+Height = Bottom

Rollo

Uwe Raabe 20. Mär 2017 08:46

AW: Verständnis bon Class TRect Definition
 
Zitat:

Zitat von bernhard_LA (Beitrag 1364809)
wie steuere ich denn ob TRect nur durch 2 TPoints oder 4 Integer Werte aufgespannt wird ?
...
Delphi-Quellcode:
 case Integer of
    0: (Left, Top, Right, Bottom: FixedInt);
    1: (TopLeft, BottomRight: TPoint);
  end;


Die Darstellung ist im Speicherlayout identisch. Ein
Delphi-Quellcode:
TPoint
ist ja auch nichts anderes als zwei FixedInt-Werte für X und Y. Daher gilt
Delphi-Quellcode:
Left = TopLeft.X
Top = TopLeft.Y
Right = BottomRight.X
Bottom = BottomRight.Y
Es ist also völlig egal, über welches Create das TRect erzeugt wurde oder ob die Werte direkt zugewiesen wurden und wie es behandelt wird. Es kommt immer dasselbe raus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz