zoukankan      html  css  js  c++  java
  • 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;             //获取起始点
    
  • 相关阅读:
    括号匹配性检测C语言实现
    预处理命令--宏定义
    *运算和&运算
    retain, copy, assign以及autorelease
    自定义 一个单例
    多米音乐笔试题
    UI-自定义视图、视图控制器
    Foundation框架—集合
    Foundation框架—字符串
    Foundation框架—结构体
  • 原文地址:https://www.cnblogs.com/del/p/1628473.html
Copyright © 2011-2022 走看看