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及初始化相关的方法.
基本用法如下:
上面的代码相当于是把四幅图画在一幅图上.其它的一些用法参考TGPGraphics相关接口.
Delphi GDI+基本用法总结