它們都是結構, TPointF、TRectF 屬新增, 其它也都有升級; 現在都擁有豐富的方法和方便的運算符重載; 且有一組相關的公共函數.
這組內容重要的是它們都來自 System.Types 單元, 也就是不僅僅在 FM 中可用.
TPoint:
Create(); // {運算符重載} Equal; // = NotEqual; // <> Add; // + Subtract; // - Implicit; // 可從 TSmallPoint 隱身轉換到 TPoint Explicit; // 可顯示轉換到 TSmallPoint {方法} Distance(); // 計算兩點之間的距離 SetLocation(); // 重定位 Offset(); // 偏移 Add(); // 加 Subtract(); // 減 IsZero(); // 是否在 [0,0] 點 {數據成員} X,Y: Longint;{ 測試 } procedure TForm1.Button1Click(Sender: TObject); varp1,p2,p3: TPoint; beginp1 := TPoint.Create(11, 22);p2.Create(11, 11);p3 := p1 + p2;ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33p3.SetLocation(0, 0);p3 := p1.Add(p2);ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33 end;
TPointF: 比 TPoint 多出三個方法:
Ceiling(); // Truncate(); // Round(); //procedure TForm1.Button1Click(Sender: TObject); varpf: TPointF;p1,p2,p3: TPoint; beginpf.Create(1.4, 1.6);p1 := pf.Ceiling;p2 := pf.Truncate;p3 := pf.Round;ShowMessageFmt('%d,%d %d,%d %d,%d', [p1.X, p1.Y, p2.X, p2.Y, p3.X, p3.Y]); //2,2 1,1 1,2 end;
TSmallPoint: 用得少, 成員也少.
Create(); // {運算符重載} Equal; // = NotEqual; // <> Add; // + Subtract; // - {方法} Add(); // 加 Subtract(); // 減 Distance(); // 計算兩點間距 IsZero(); // 是否是 [0,0] 點 {數據成員} X,Y: SmallInt;
TSize:
Create(); // {運算符重載} Equal; // = NotEqual; // <> Add; // + Subtract; // - {方法} Add(); // 加 Subtract(); // 減 Distance(); // 計算兩點間距 IsZero(); // 是否是 [0,0] 點 {屬性} Width; // Height; // {數據成員} cx,cy: Single;
TRect:
Create(); //建立時和可同時規格化矩形; 參見 NormalizeRect() 方法 {運算符重載} Equal; // = NotEqual; // <> Add; // + (并集) Multiply; // * (交集) {類方法} Empty; //獲取一個空的 TRect 對象; 內聯 Intersect; //獲取兩個矩形的交集矩形 Union; //獲取兩個矩形的并集矩形 {方法} NormalizeRect(); //規格化矩形; 當 Top > Bottom 或 Left > Right 時, 會置換數據使之合理. IsEmpty(); //是否為空 Contains(); //是否包含指定點或指定矩形 IntersectsWith(); //判斷和指定矩形是否交叉 Intersect(); //和指定矩形進行交集運算 Union(); //和指定矩形進行并集運算 Offset(); //偏移 SetLocation(); //設置新原點 Inflate(); //放大矩形(保持中心點) CenterPoint(); //獲取中心點 SplitRect(); //切除, TSplitRectType 枚舉(Left、Top、Right、Bottom)指示要留住的一邊 {屬性} Width: Integer; //有這些屬性很方便 Height: Integer; // Size: TSize; // Location: TPoint; // {數據結構, 這同前} (Left, Top, Right, Bottom: Longint) 或 (TopLeft, BottomRight: TPoint)
TRectF: 只比 TRect 多出了轉換到 TRect 時關于小數取舍的三個方法.
Ceiling(); // Truncate(); // Round(); //
相關的公共函數與過程:
{ function } EqualRect(); //判斷 TRect 或 TRectF 是否相等 Rect(); //構建 TRect RectF(); //構建 TRectF NormalizeRectF(); //從 TPointF 數組規格化出一個 TRectF NormalizeRect(); //規格化 TRectF RectWidth(); //獲取矩形寬度 RectHeight(); //獲取矩形高度 RectCenter(); //讓矩形在另一指定矩形中居中 Bounds(); //根據原點、寬、高構建矩形 Point(); //構建 TPoint PointF(); //構建 TPointF MinPoint(); //比對兩個點返回小的(優先判斷了 Y) ScalePoint(); //按指定比例移動點 SmallPoint(); //構建 TSmallPoint PtInRect(); //判斷點是否在指定矩形中 PtInCircle(); //判斷點是否在指定了中心與半徑的圓中 IntersectRect(); //判斷兩矩形是否相交 UnionRect(); //結合兩矩形 IsRectEmpty(); //判斷矩形是否為空 OffsetRect(); //偏移矩形 CenterPoint(); //獲取矩形中心點 SplitRect(); //矩形切除 CenteredRect(); //算出兩個矩形的中間過渡矩形; 應該是用于動畫的 IntersectRectF(); //輸出兩矩形的交集 UnionRectF(); //輸出兩矩形的并集 { procedure } MultiplyRect(); //按比放縮矩形 InflateRect(); //按量放縮矩形