文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 320
阅读 2
收藏 0

这些基础结构有: 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;             //获取起始点

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/12/20/1628473.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:\program files\microsoft sdks\windows\v7.0a\include\gdiplusheaders.h(630) : ......

xxdd
2013/10/24
65
0
vs 2005 添加GDI配置

在VS2005当中由于自带了GDI+的开发包,所以不需要在安装GDI开发包,这些头文件的位置由VS中的$(WindowsSdkDir)/include自动包含进来了 下午自己添加了好几次,总是出现有报错,,在 stdafx.h...

种地瓜
2015/12/08
85
0
求助:fedora 14 用wine安装rtx 失败

公司用RTX交流,现在因为学习安装了fedora 14系统,想用RTX,于是装上了WINE1.3,再安装winetricks, 安装库文件winetricks msxml3 gdiplus riched20 riched30 ie6 vcrun6 vcrun2005sp1, 再安...

我勒个去也
2011/11/04
1K
9
MFC边框重绘

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 pragma once incl......

江河海流
2016/01/30
509
0
在ubuntu下完美安装RTX(解决离线、乱码问题) 转

本教程在Ubuntu10.10及11.04测试通过,其它Ubuntu版本仅供参考。 1.在Ubuntu的软件中心的菜单栏中的编辑下面打开软件源-》其他软件-》添加,输入: deb http://ppa.launchpad.net/wine-cn/p...

晓亮1210
2013/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux syslog相关函数详解

介绍 syslog是Unix系统的日志系统。可以将日志记录在本地系统中。 一个完整的syslong日志包含如下信息:程序模块 | 严重性 | 时间 | 主机名 | 进程名 | 进程ID | 正文。 syslong相关函数 1....

RongJinhui0
13分钟前
0
0
使用nsenter工具进入Docker容器

查看本机装没有nsenter whereis nsenter或者whatis nsenter 未安装先安装,网上有很多这样的脚本 vi nsenter.sh#!/bin/bashcurl https://www.kernel.org/pub/linux/utils/util-linux/v2....

问题终结者
13分钟前
1
0
MaxCompute安全管理指南-基础篇

背景及目的 方便和辅助MaxCompute的project owner或安全管理员进行project的日常安全运维,保障数据安全。 MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而...

阿里云云栖社区
14分钟前
0
0
Retrofit设计模式源码解析

因为Retrofit做到了很强的解耦,因此就一定需要用到很多设计模式。所以,我觉得,通过阅读Retrofit源码来学习设计模式是再好不过的设计模式学习方法了。 大致看了一圈Retrofit源码,受益匪浅...

亭子happy
14分钟前
3
0
哈夫曼编码

哈夫曼编码的基本思想是以字符的使用频率作为权构建一颗哈夫曼树,然后利用 哈夫曼树对字符进行编码 哈夫曼算法采用的贪心策略是每次从树的集合中取出没有双亲权值最小的两棵作为左右子树, ...

writeademo
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部