• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

DelphiGDI+基本用法总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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+的基本用法

引用GDIPOBJGDIPAPI这两个单元, 需要在开始之前需要调用调用初始化方法, 主要是加载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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi调试BPL包中引用另外的BPL的方法。发布时间:2022-07-18
下一篇:
《WebBrowser组件和MSHTML在Delphi中的使用》补充发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap