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

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



TGPPoint 或 TGPPointF 方便的功能:

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


varPt1,Pt2,Pt3: TGPPoint;b: Boolean;
beginPt1.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 函数.


varSize1, Size2, Size3: TGPSize;
beginSize1.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;             //获取起始点

转载于:https://www.cnblogs.com/del/archive/2009/12/20/1628473.html

GdiPlus[40]: 不该忽略的一些基础结构相关推荐

  1. 博客总目录(2007.11.12 - 2010.4.25)

    如果我的学习记录和历程能对你有所帮助, 我非常高兴; 但是 -- "万一" 不是高手.更不是大师, 只是利用工作之余学点东西, 并感觉学得挺吃力. 内容都是写时才会, 难免稚嫩, ...

  2. 【R语言】时间序列案例:住宅销量预测的乘法季节模型

    数据来自澳大利亚莫纳什大学统计学教授Rob Hyndman创建的时间序列数据库(TSDB),数据库涵盖近800个时间序列数据(经济.水文.气象.农业等):该数据集提供了从1973年到1995年美国新单 ...

  3. 2020戴森设计大奖两项全球冠军揭晓

    2020年是戴森设计大奖(The James Dyson Award)创下新纪录的一年,目前该奖项已经资助了来自世界各地的年轻工程师和科学家的250项发明.在今年充满严峻挑战的背景下,戴森设计大奖收到 ...

  4. Win32汇编:过程与宏调用

    堆栈操作指令 在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种后进先出(LIFO,Last-In,First-Out)的数据结构,这是因为最后压入堆栈的值总是最先被取出,而新数值在执行PUSH压栈时 ...

  5. 【专题十一】如何配置笔记本电脑

    文章目录 一. 类型 二. CPU 三. 显卡 四. 散热 五. 屏幕 六. 内存 七. (固态)硬盘 八. 其他 九. 价格 文章号:[2022]002 一. 类型 1. 轻薄本:(轻薄优先) 特点 ...

  6. 多码头间运输数学模型

    A mathematical model of inter-terminal transportation Kevin Tierney:Stefan Voß:Robert Stahlbock 摘要 我 ...

  7. mc服务器区块显示,区块 - Minecraft Wiki,最详细的官方我的世界百科

    一个区块的地面部分的截面.整个区块最高可延伸至256 区块(Chunk)是Minecraft世界里一个大小为16×256×16 生成[] 区块宽16格,长16格,高256当玩家第一次出现在世界时会在其 ...

  8. 40 张图带你搞懂 TCP 和 UDP

    前言 拿下计网协议后,我就是公园里最靓的仔 TCP/IP 基础知识总结 计算机网络基础知识总结 那么下面就开始我们本篇文章,文章组织脉络如下 运输层位于应用层和网络层之间,是 OSI 分层体系中的第四 ...

  9. Nature news: 未来40年,DNA测序将走向何方?

    Nature news: 未来40年,DNA测序将走向何方? 2017-10-14 00:00 40年前,Sanger测序技术诞生,让DNA片段的测序成为现实.自此,DNA测序技术以惊人的速度发展,越 ...

最新文章

  1. JasperReport报表设计4
  2. MySQL双主配置步骤
  3. iOS开发中各种关键字的区别
  4. C语言实现链表(附完整源码)
  5. 超好看的引导购买页源码
  6. Web端调用Outlook 的发信窗口
  7. linux系统怎么启动服务器,Linux操作系统的启动步骤详细说明
  8. # 创业计划书-样例参考五千套(一)
  9. 综合能源业务有哪些?
  10. HTML 做个漂亮的表格
  11. Python:快速裁剪PDF页面
  12. 如何将图片转成png格式?图片的格式怎么转换
  13. Linux学习笔记(1)--Linux的发展史
  14. Windows10 下面一个非常快速而精悍的看图软件 - IrfanView
  15. ftp连接21端口出现的问题的解决方案
  16. linux里sh命令是做什么的?详解!
  17. 蓝桥杯比赛准备总结(大学编程学习历程)
  18. 《Qt 学习之路 2》
  19. bool 和_Bool的使用
  20. Linux人机界面用什么软件,浙江Linux人机界面品牌,人机界面界面设计品牌

热门文章

  1. Spring 的学习
  2. (转)SQL Server 监控统计阻塞脚本信息
  3. 微服务:更愉快还是更嘈杂?
  4. Python守护进程
  5. 在网页浏览器中原生显示PDF文件
  6. 【DM642学习笔记一】关于Can't Initialize Target CPU的一种解决方法 : Error 0x80000240
  7. SQL里面也能用Split()
  8. 在域中使用组策略允许用户关闭计算机以及更改系统时间
  9. Golang最佳Web框架对比
  10. Keras学习---MLP和CNN模型建立篇