zoukankan      html  css  js  c++  java
  • 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(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();    //按量放缩矩形
    

  • 相关阅读:
    痞子衡嵌入式:并行NAND接口标准(ONFI)及SLC Raw NAND简介
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(5)- 再聊eFUSE及其烧写方法
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(4)- Flashloader初体验(blhost)
    Hystrix完整配置列表
    使用Redis实现UA池
    使用Redis实现延时任务(二)
    使用Redis实现延时任务(一)
    一文彻底理解Redis序列化协议,你也可以编写Redis客户端
    一个低级错误引发Netty编码解码中文异常
  • 原文地址:https://www.cnblogs.com/del/p/2186008.html
Copyright © 2011-2022 走看看