Delphi XE2 之 FireMonkey 入门(10) - 常用结构 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相关方法
它们都是结构, 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 及相关方法的更多相关文章
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...
- Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit
Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...
- Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo
Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSma ...
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid
Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...
- Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox
Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...
- Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu
Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...
- Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public constructor Create(...); ov ...
随机推荐
- 公用flex类
开发过程中,很多布局,用antd的栅格还是不灵活,flex弹性布局会更好用 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 注意 ...
- 动态路由协议RIP
RIP Routing Information Protocol,属IGP协议,是距离矢量型动态路由协议(直接发送路由信息的协议为距离矢量型协议),使用UDP协议,端口号520. 贝尔曼福特算法 RI ...
- python3-多重继承
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗: Bat - 蝙蝠: Parrot - ...
- u-boot-2019.07 移植步骤
doc/README.kconfig Tips to add/remove boards------------------------- When adding a new board, the f ...
- snmpwalk工具使用
snmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户. 在linux下使用snmpwalk工具,我们 ...
- 【LuoguP4770】[NOI2018] 你的名字
题目链接 题意简述 给定一个串 \(S\) 多组询问 , 每次给定一个串 \(T\) 和一个 区间 \([l,r]\) 求串\(T\) 有多少个本质不同的子串 满足不是 \(S[l...r]\) 的子 ...
- 【LuoguP3348】[ZJOI2016]大森林
题目链接 题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y ...
- springboot+mybatis 配置sql打印日志
第一种: 配置类型 # 配置slq打印日志 logging.level.com.lawt.repository.mapper=debug重点: #其中 com.lawt.repository.ma ...
- rocketmq运维管理
# 运维管理--- ### 1 集群搭建 #### 1.1 单Master模式 这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用.不建议线上环境使用,可以用于本地测试. #### ...
- 【leetcode】1106. Parsing A Boolean Expression
题目如下: Return the result of evaluating a given boolean expression, represented as a string. An expres ...