Delphi GDI+基本用法总结
GDI+以前只是听说过,还没怎么用过,这段时间用了用,觉得挺好用的.在这里总结一下.留个备忘.
GDI+(Graphics Device Interface plus)是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。由于它是图形绘制相关的接口,那先了解一下常用的几种图片格式.
常见的图片格式
常见的图片格式有JPEG, BMP, PNG.
- JPEG:它用有损压缩方式去除冗余的图像或彩色数据, 获取得极高的压缩率的同时展现了十分丰富生动的图像.应用最为广泛.引用JPEG单元, 通TJPEGimage类进行读取.
- BMP:它是bitmap(位图)的简称, 它是window操作系统中标准图像文件格式,能够被多种window应用程序支持,特点在于包含的图像信息丰富,几乎不进行压缩, 但是因为这个,它占用的空间比较大.Delphi里TImage里需要的格式就是BMP.引用Graphics单元, 通过TBitmap进行读取.
- PNG: 它是新兴的网络图像格式, 是目前最不失真的格式, 相对于除BMP格式外.需要提到的它支持透明图像的制作.这样就可以实现在图像上加水印的功能.引用pngImage单元, 通过TPNGImage类可以加载PNG图像.
不同图片格式的转换
PNG转换成Bitmap
var
oBitMap: TBitMap;
oPNG: TPNGImage;
begin
strFileName := '1.png';
oBitMap := TBitMap.Create;
oPNG := TPNGImage.Create;
try
oPng.LoadFromFile(strFileName);
oBitMap.Width := 100;
oBitMap.Height := 200;
oBitMap.Canvas.Draw(0, 0, oPng);
finally
oBitMap.Free;
oPng.Free;
end;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
BMP转换成IStream
oBitMap := TBitMap.Create;
try
oBitmap.loadFromFile('1.bmp');
oStream := TMemoryStream.Create;
try
oBitmap.SaveToStream(oStream);
oStream.Position := 0;
oStreamAdapter := TStreamAdapter.Create(oStream);
// do something
finally
oStream.free;
oStreamAdapter := nil; //需要注意,不能直接Free, 是接口,带有引用计数
end;
finally
oBitmap.free;
end;
GDI+的基本用法
引用GDIPOBJ, GDIPAPI这两个单元, 需要在开始之前需要调用调用初始化方法, 主要是加载dll及初始化相关的方法.
基本用法如下:
oImage1 := TGPImage.Create('Photo_1.jpg');
oImage2 := TGPImage.Create('Photo_2.jpg');
oImage3 := TGPImage.Create('Photo_3.jpg');
oImage4 := TGPImage.Create('Photo_4.jpg');
g1 := TGPGraphics.Create(image1.Canvas.Handle);
g1.DrawImage(oImage1, 0, 0, oImage1.GetWidth, oImage1.GetHeight);
g1.DrawImage(oImage2, oImage1.GetWidth, 0, oImage2.GetWidth, oImage2.GetHeight);
g1.DrawImage(oImage3, 0, oImage1.GetHeight, oImage3.GetWidth, oImage3.GetHeight);
g1.DrawImage(oImage4, oImage1.GetWidth, oImage1.GetHeight, oImage4.GetWidth, oImage4.GetHeight);
上面的代码相当于是把四幅图画在一幅图上.其它的一些用法参考TGPGraphics相关接口.
http://blog.csdn.net/hpjx1987/article/details/51056978
Delphi GDI+基本用法总结的更多相关文章
- (转载)Delphi TStringList的用法
Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...
- Delphi GDI+ Library
GDI+ LibraryThis library enables GDI+ functionality for Delphi 2009 and later. It differs from other ...
- Delphi TStringList的用法
Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...
- Delphi Inputbox,InputQuery用法
Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...
- Delphi XE4 TStringHelper用法详解
原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...
- delphi FillChar的用法(转)
delphi FillChar的用法(转) (2012-12-24 15:12:06) 转载▼ 标签: it 分类: delphi7 FillChar的用法(delphi) Fillchar是Turb ...
- Delphi GDI+ 安装方法
[转]Delphi GDI+ 安装方法转自:万一博客(http://www.cnblogs.com/del/)GDI+ 是 Windows 的一个函数库, 来自 Windows\System32\GD ...
- Delphi GDI(一)
Delphi 7下IGDIPlus库的使用 IGDI+是一个免费开源封装微软GDI+功能的Delphi库,该库使得可以用Delphi语言代码快速简短的实现复杂GDI+应用程序. 官方网站:http:/ ...
- Delphi常用关键字用法详解
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...
随机推荐
- 如何用java实现使用电子邮件控制你的电脑
上两天看到一篇文章,用python实现电子邮件控制电脑的有趣的小程序 python 实现微信控制电脑 python版的视频教程 但是苦于自己没接触过python于是想到能不能用java实现,于 ...
- 20160509-hibernate-集合映射
集合映射 集合映射(set, list, array,bag, map) <set name=”employees” > <key column=”depart_id”/> & ...
- poj2594 (最小路径覆盖 + floyd)
题目链接 http://poj.org/problem?id=2594) 题目大意: 一个有向图中, 有若干条连接的路线, 问最少放多少个机器人,可以将整个图上的点都走过. 最小路径覆盖问题. 分析 ...
- sqlserver 理解文件和文件组
在sqlserver中,数据库在硬盘的存储方式和普通文件存储一样,仅仅几个文件而已,sqlserver通过管理逻辑上的文件组的方式来管理存储数据的文件, 如图: 文件组管理着磁盘上的文件,而文件中存放 ...
- Decorator设计模式浅谈
装饰类跟基础组件都实现了目标接口,是为了匹配正确的类型.Java中的IO设计就是典型的Decorator设计模式. 装饰模式产生的初衷是, 对默认实现类的行为进行扩展. 由于装饰类的构造器接受的参数是 ...
- aix 计算性内存和文件内存
经过有客户问AIX topas中内存(memory)一项显示的数值含义: MEMORY Real,MB 4096 % Comp 68.9 % Noncomp 22.6 % Clie ...
- 用dubbo+zookeeper+spring搭建一个简单的http接口程序
dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...
- ios -- cell的图片下载
1.面试题 1> 如何防止一个url对应的图片重复下载 * “cell下载图片思路 – 有沙盒缓存” 2> SDWebImage的默认缓存时长是多少? * 1个星期 3> SDWeb ...
- Codevs 1684 垃圾陷阱
1684 垃圾陷阱 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 卡门--农夫约翰极其珍视的一条Holsteins奶牛--已经落了 ...
- 九度OJ 1528 最长回文子串 -- Manacher算法
题目地址:http://ac.jobdu.com/problem.php?pid=1528 题目描述: 回文串就是一个正读和反读都一样的字符串,比如"level"或者"n ...