文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 855
阅读 4
收藏 0

它们都是结构, 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(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,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();    //按量放缩矩形

本文转载自:http://www.cnblogs.com/del/archive/2011/09/23/2186008.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
使用 Delphi 开发移动应用

引言 现在移动设备的发展现在变成了趋势. 我们可以考虑本地语言开发 (例如ObjectiveC for IOS或 Java for Android), 但通常对新开发者的学习代价高. 另一个选择是第三方代理 (例如Titanium,...

oschina
2012/12/11
10.3K
21
Delphi XE2:这就是我们所期待的Delphi吗?

版权声明:本文为 OSChina.NET 原创编译 转载务必注明出处,并保留链接! 作者:蒂姆.安德森 Delphi是被一些人遗忘了的快速应用程序开发工具,但它与可视组件库相结合,依然是开发Windows本机...

虫虫
2011/10/31
40.7K
49
最全面的常用Delphi第三方控件汇总—报表、图表、界面、数据库等

有网友问我常用Delphi第三方控件及功能。我先大概整理一下,以后会在文章里面碰到时再仔细介绍。 报表图表方面: TeeChart Pro 在delphi 的图形显示方面目前唯一的选择,虽然从delphi 3 就随...

Leamontea
2012/12/03
0
2
Delphi XE2 新功能:LiveBindings --- 把对象之间的属性绑定起来

Delphi XE2 新功能:LiveBindings --- 把对象之间的属性绑定起来日期:2011年9月9日 作者: 人气:5340 查看:[大字体 中字体 小字体] XE2 有了 FireMonkey 框架,它不同于 VCL ,以往的数据感...

vga
2016/08/09
17
0
PostgreDAC 2.8.0,Delphi的PostgreSQL组件

PostgreDAC 2.8.0 发布了,该版本首次通过 RAD Studio XE2 支持 Mac OS X 系统,大大提升了 FireMonkey 支持,修复了关于 TPSQLMonitor 的 bug。 完整改进记录: [!] FireMonkey and cross p...

红薯
2012/03/20
678
1

没有更多内容

加载失败,请刷新页面

加载更多

Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期

前言:从本篇开始,将进入Multimedia框架,包含MediaPlayer, Camera, Surface, MediaRecord, 接下来几篇都是MediaPlayer相关。同样看下Agenda如下: MediaPlayer的状态图 Idle 状态 End 状态...

天王盖地虎626
13分钟前
0
0
IntelliJ IDEA创建第一个Spring boot项目

下载maven:http://maven.apache.org/download.cgi 开发工具:IntelliJ IDEA JDK: Java JDK1.8 ## 1.为了第一个项目初始化速度加快,我们先来配置maven: 添加配置: 选择Build,Execution,Dep...

凌宇之蓝
今天
2
0
Coding and Paper Letter(四十五)

资源整理。 1 Coding: 1.Python库gempy,一种基于Python的开源三维结构地质建模软件,它允许从界面和方向数据隐式(即自动)创建复杂的地质模型。 它还支持随机建模以解决参数和模型的不确定...

胖胖雕
今天
6
0
golang 声明一个指定长度的数组,用于后续添加

很多时候我们需要声明一个指定长度的数组,用于后续添加.在使用go的时候要注意,下面的第一个例子会有报错 "non-constant array bound",应该使用第二个例子. Length 是动态的值 有报错的例子 ...

漫步海边小路
今天
0
0
Java NIO示例

Server端 /** * 《构建高性能的大型分布式Java应用》 * 书中的示例代码 * 版权所有 2008---2009 */package book.chapter1.tcpnio;import java.net.InetSocketAddress;i...

月下狼
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部