博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi XE2 之 FireMonkey 入门(10) - 常用结构 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相关方法...
阅读量:6273 次
发布时间:2019-06-22

本文共 3371 字,大约阅读时间需要 11 分钟。

  hot3.png

它们都是结构, TPointF、TRectF 属新增, 其它也都有升级; 现在都拥有丰富的方法和方便的运算符重载; 且有一组相关的公共函数.
这组内容重要的是它们都来自 System.Types 单元, 也就是不仅仅在 FM 中可用.

TPoint:

Create();      //{运算符重载}Equal;         // =NotEqual;      // <>Add;           // +Subtract;      // -Implicit;      // 可从 TSmallPoint 隐身转换到 TPointExplicit;      // 可显示转换到 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(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);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,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();    //按量放缩矩形

转载于:https://my.oschina.net/hermer/blog/320146

你可能感兴趣的文章
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>