它们都是结构, 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);
var
  p1,p2,p3: TPoint;
begin
  p1 := TPoint.Create(, );
  p2.Create(, );
  p3 := p1 + p2;
  ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33   p3.SetLocation(, );
  p3 := p1.Add(p2);
  ShowMessageFmt('%d,%d', [p3.X, p3.Y]); //22,33
end;

TPointF: 比 TPoint 多出三个方法:


Ceiling();  //
Truncate(); //
Round();    // procedure TForm1.Button1Click(Sender: TObject);
var
  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,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();    //按量放缩矩形

Delphi XE2 之 FireMonkey 入门(10) - 常用结构 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相关方法的更多相关文章

  1. Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem

    Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...

  2. Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit

    Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...

  3. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  4. Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题

    Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...

  5. Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid

    Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...

  6. Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox

    Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...

  7. Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox

    Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...

  8. Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu

    Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...

  9. Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览

    Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public   constructor Create(...); ov ...

随机推荐

  1. JS事件流、事件监听、事件对象、事件委托

    JS事件流: 01.DOM级别和DOM事件 02.JS事件流:页面中接收事件的顺序 事件冒泡阶段-->处于目标阶段-->事件捕获阶段 (事件捕获总发生在事件冒泡前面) 03.捕获:从外向里 ...

  2. 微信授权获取code/openid

    微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要 ...

  3. 内置的os模块和sys模块

    os模块:与操作系统交互的一种接口 """ os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname& ...

  4. 010-流程控制 while 与 until 语句

    流程控制 while 与 until 语句 while循环是不定循环,也称作条件循环,只要条件成立,循环就一直继续.与for的固定循环不同 until只要条件不成立,循环就一直继续 #!/bin/ba ...

  5. JavaScript设计模式 样例一 —— 工厂模式

    工厂模式(Factory Pattern): 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 目的:工厂模式是为了解耦,把对象的创建和使用 ...

  6. 唤醒 App

    一.Deep Link 1.什么是 Deep Link? Deep Link 是 App 的深度连接,当单击链接或编程请求调用Web URI意图时,Android系统按顺序依次尝试以下每一个操作,直到 ...

  7. git-shell设置代理

    Configure Git to use a proxy ##In Brief You may need to configure a proxy server if you're having tr ...

  8. 原生JS 将时间转换成几秒前,几分钟前…常用于评论回复功能

    //格式化时间 留备用~ function getDateDiff(dateStr) { var publishTime = dateStr / 1000, d_seconds, d_minutes, ...

  9. 【leetcode】1095. Find in Mountain Array

    题目如下: (This problem is an interactive problem.) You may recall that an array A is a mountain array i ...

  10. 微信小程序细节部分

    微信小程序和HTML区别: 1.开发工具不同,H5的开发工具+浏览器Device Mode预览,小程序的开发基于自己的开发者工具 2.开发语言不同,小程序自己开发了一套WXML标签语言和WXSS样式语 ...