這些基礎結構有: TGPSize、TGPSizeF、TGPPoint、TGPPointF、TGPRect、TGPRectF.
它們自身提供了一些方便的功能, 如果早看看的話前面的很多代碼能更精簡些.
TGPPoint 或 TGPPointF 方便的功能:
1、因為已經重載了 Add、Subtract 運算符, 所以 "點" 可以 + 或 -;
2、可使用 Equals 函數對比是否一致.
var
Pt1,Pt2,Pt3: TGPPoint;
b: Boolean;
begin
Pt1.Initialize(30 , 30 );
Pt2.Initialize(20 , 20);
{ Add }
Pt3 := Pt1 + Pt2;
ShowMessageFmt('%d, %d', [Pt3.X, Pt3.Y]); { 50, 50}
{ Subtract }
Pt3 := Pt1 - Pt2;
ShowMessageFmt('%d, %d', [Pt3.X, Pt3.Y]); { 10, 10 }
{ Equals }
b := Pt1.Equals(TGPPoint.Create(30, 30));
ShowMessage(BoolToStr(b, True)); { True }
end;
TGPSize 或 TGPSizeF 在 TGPPoint 的基礎上, 增加了一個判斷是否為空的 Empty 函數.
var
Size1, Size2, Size3: TGPSize;
begin
Size1.Initialize(10, 10);
Size2.Initialize(10, 10);
Size3 := Size1 + Size2;
ShowMessage(BoolToStr(Size3.Empty, True)); { False }
Size3 := Size1 - Size2;
ShowMessage(BoolToStr(Size3.Empty, True)); { True }
end;
TGPRect 和 TGPRectF 的功能更多, 容易忽視的有:
TGPRect.Create(TRect); //可通過 TRect 建立
Rect.InitializeFromLTRB(); //可根據兩個點初始化
Rect.IsEmptyArea; //可判斷矩形區域是否真實存在
Rect.Clone; //可復制
Rect.Contains(); //可判斷是否包含一個點或另一個矩形
Rect.Equals(); //是否相等
Rect.IntersectsWith(); //是否相交
Rect.Inflate(); //放縮矩形
Rect.Offset(); //移動矩形
Rect.Intersect(); //產生相交的矩形
Rect.Union(); //產生聯合的矩形
Rect.Location; //獲取起始點