• GdiPlus[40]: 不该忽略的一些基础结构



    这些基础结构有: TGPSize、TGPSizeF、TGPPoint、TGPPointF、TGPRect、TGPRectF.

    它们自身提供了一些方便的功能, 如果早看看的话前面的很多代码能更精简些.

    TGPPoint 或 TGPPointF 方便的功能:

    1、因为已经重载了 Add、Subtract 运算符, 所以 "点" 可以 + 或 -;
    2、可使用 Equals 函数对比是否一致.

    var
      Pt1,Pt2,Pt3: TGPPoint;
      b: Boolean;
    begin
      Pt1.Initialize(30, 30);
      Pt2.Initialize(20, 20);
    
      { Add }
      Pt3 := Pt1 + Pt2;
      ShowMessageFmt('%d, %d', [Pt3.X, Pt3.Y]); { 50, 50}
    
      { Subtract }
      Pt3 := Pt1 - Pt2;
      ShowMessageFmt('%d, %d', [Pt3.X, Pt3.Y]); { 10, 10 }
    
      { Equals }
      b := Pt1.Equals(TGPPoint.Create(30, 30));
      ShowMessage(BoolToStr(b, True)); { True }
    end;
    

    TGPSize 或 TGPSizeF 在 TGPPoint 的基础上, 增加了一个判断是否为空的 Empty 函数.

    var
      Size1, Size2, Size3: TGPSize;
    begin
      Size1.Initialize(10, 10);
      Size2.Initialize(10, 10);
    
      Size3 := Size1 + Size2;
      ShowMessage(BoolToStr(Size3.Empty, True)); { False }
    
      Size3 := Size1 - Size2;
      ShowMessage(BoolToStr(Size3.Empty, True)); { True }
    end;
    

    TGPRect 和 TGPRectF 的功能更多, 容易忽视的有:

    TGPRect.Create(TRect);     //可通过 TRect 建立
    Rect.InitializeFromLTRB(); //可根据两个点初始化
    Rect.IsEmptyArea;          //可判断矩形区域是否真实存在
    Rect.Clone;                //可复制
    Rect.Contains();           //可判断是否包含一个点或另一个矩形
    Rect.Equals();             //是否相等
    Rect.IntersectsWith();     //是否相交
    Rect.Inflate();            //改变大小
    Rect.Offset();             //移动矩形
    Rect.Intersect();          //产生相交的矩形
    Rect.Union();              //产生联合的矩形
    Rect.Location;             //获取起始点
    
  • 相关阅读:
    解决object at 0x01DB75F0
    github导入文件操作
    git出现: not a git repository
    scrapy框架爬取妹子图片
    mysql触发器,视图,游标
    mysql锁
    在k-means或kNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?
    数据库存储,索引,事务常见问题
    使用Request+正则抓取猫眼电影(常见问题)
    Tensorflow()
  • 原文地址:https://www.cnblogs.com/del/p/1628473.html
Copyright © 2020-2023  润新知