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;             //获取起始点


 
   

你可能感兴趣的:(dip)