DelphiXE2之FireMonkey入门(10)-飞外

它们都是结构, TPointF、TRectF 属新增, 其它也都有升级; 现在都拥有丰富的方法和方便的运算符重载; 且有一组相关的公共函数.

这组内容重要的是它们都来自 System.Types 单元, 也就是不仅仅在 FM 中可用.


TPoint:

Create();   //{运算符重载}Equal;    // =NotEqual;   // Add;     // +Subtract;   // -Implicit;   // 可从 TSmallPoint 隐身转换到 TPointExplicit;   // 可显示转换到 TSmallPointDistance();  // 计算两点之间的距离SetLocation(); // 重定位Offset();   // 偏移Add();    // 加Subtract();  // 减IsZero();   // 是否在 [0,0] 点{数据成员}X,Y: Longint;{ 测试 }procedure TForm1.Button1Click(Sender: TObject); p1,p2,p3: TPoint;begin p1 := TPoint.Create(11, 22); p2.Create(11, 11); p3 := p1 + p2; ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33 p3.SetLocation(0, 0); p3 := p1.Add(p2); ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33end;


TPointF: 比 TPoint 多出三个方法:

Ceiling(); //Truncate(); //Round();  //procedure TForm1.Button1Click(Sender: TObject); pf: TPointF; p1,p2,p3: TPoint;begin pf.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,2end;


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();     //构建 TRectRectF();     //构建 TRectFNormalizeRectF(); //从 TPointF 数组规格化出一个 TRectFNormalizeRect(); //规格化 TRectFRectWidth();   //获取矩形宽度RectHeight();  //获取矩形高度RectCenter();  //让矩形在另一指定矩形中居中Bounds();    //根据原点、宽、高构建矩形Point();     //构建 TPointPointF();    //构建 TPointFMinPoint();   //比对两个点返回小的(优先判断了 Y)ScalePoint();  //按指定比例移动点SmallPoint();  //构建 TSmallPointPtInRect();   //判断点是否在指定矩形中PtInCircle();  //判断点是否在指定了中心与半径的圆中IntersectRect(); //判断两矩形是否相交UnionRect();   //结合两矩形IsRectEmpty();  //判断矩形是否为空OffsetRect();  //偏移矩形CenterPoint();  //获取矩形中心点SplitRect();   //矩形切除CenteredRect(); //算出两个矩形的中间过渡矩形; 应该是用于动画的IntersectRectF(); //输出两矩形的交集UnionRectF();  //输出两矩形的并集{ procedure }MultiplyRect(); //按比放缩矩形InflateRect();  //按量放缩矩形