文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 320
阅读 2
收藏 0
点赞 0
评论 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
深圳
程序员
vs 2005 添加GDI配置

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

种地瓜
2015/12/08
85
0
GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:program filesmicrosoft sdkswindowsv7.0aincludegdiplusheaders.h(630) : 参见“G......

xxdd
2013/10/24
60
0
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
MFC用GDI+动感歌词的制作

源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1. 插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名为ClyricDlg; 2. 在对话框的头文件中添加GDI+相...

长平狐
2012/10/08
236
0
在ubuntu下完美安装RTX(解决离线、乱码问题) 转

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

晓亮1210
2013/09/22
0
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
在DLL中调用createwindows,报错1407

//初始化 AtlAxWinInit(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); //名字和当......

哈大哈傻瓜
2016/03/27
116
0
VC 6.0 配置和使用gdi+

GDI+ GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,W...

junwong
2012/03/23
1K
0
[整理]关于修正CUE文件错误以正常播放APE问题

昨天下载了天堂咖啡厅《Nirvana Café》(推荐朋友们下载听听,不错的音乐^_^)这张专辑,APE格式的,安装好WinAmp的MP3CUE之后发现WinAmp无法播放,遂认为个人RPWT,因此狠下心来安装了Foo...

kareclock
06/26
0
0
模仿酷狗7(Kugou7)音乐魔方界面源码

源码名称:模仿酷狗7(Kugou7)界面源码 源码作者:邓学彬(泪闯天涯) 源码说明:内含VC++源码、易语言源码各一份.包含所有图片源码(使用Fireworks编辑) 开发环境:VC版--VS2005、Gdiplus;易语...

邓学彬
2012/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
6分钟前
0
0
高性能服务器本质论

一 服务器分类 从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器 (1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。 典型的如转发服务器/...

码代码的小司机
7分钟前
0
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
32分钟前
0
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
0
0
OSChina 周日乱弹 —— 局长:怕你不爱我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ andonny :分享周二珂的单曲《孤独她呀》 《孤独她呀》- 周二珂 手机党少年们想听歌,请使劲儿戳(这里) @孤星闵月 :没事干,看一遍红楼梦...

小小编辑
今天
181
9
Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
今天
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
11
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
17
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
251
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部