背景:  之前承其他同事的项目,他使用Delphi 与 GDI+ ,对JPG 进行叠加文字处理。使用了一个“IGDIPlus.pas”的库
  使用:IGpGraphics, IGPImage, IGpBitmap声明变量,但在下面,创建时,使用的是 TGpGraphics,TGPImage等
  
  代码:var
  ...
  ...
  oBmp: IGPImage;
  oG: IGPGraphics;
begin...
...
    oBmp := TGPBitmap.Create(nW, nH);
    oG := TGPGraphics.Create(oBmp);
    oG.DrawImage(oImg, 0, 0, oImg.Width, oImg.Height);
    oBmp.Save(sFileName, encoderClsid, @EParam);
    oBmp := nil;
...
...end;
 
之前有听说IGPGraphics是接口类,但不知其所以然,想请阿发伯,大概说说,IGPGraphics与TGPGraphics,I和T在操作上,是否有什么特别注意的地方。还有,之前项目,用到的是“IGDIPlus.pas”库,和阿发伯提供下载的“Gdiplus.pas, GdipTypes.pas, GdipUtil.pas, GdipExport.pas”,有所不同。
也请阿发伯介绍下,两种库的区别特点。

解决方案 »

  1.   

    接口与类,有什么区别,和注意的呢?之前用DELPHI,一直没有接触过“接口”概念。能详细说说吗
      

  2.   

    接口实际就是一个方法表,类似于虚方法表,实际中用的不少,但开发接口基本不怎么接触,我觉得接口最大的好处就是多继承很容易,比如有2个类Tbmp和Tjpg分别操作bmp和jpg图片,现在想弄个新的类既能操作bmp也能操作jpg比如叫TPic,按照理解TPic完全可以通过继承Tbmp和Tjpg得来,可类是无法多继承的,这样是不行的
    type
      TPic = class(Tbmp, Tjpg);但如果有Ibmp和Ijpg接口的就可以实现多继承了(Tbmp是Ibmp的实现,Tjpg是Ijpg的实现)
    type
      TPic = class(TInterfacedObject, Ibmp, Ijpg);
    在类TPic里委托实现Ibmp和Ijpg就使TPic即可处理bmp又可处理jpg了。
      

  3.   

    三言两语可说不清,自己看书吧,《Delphi高级应用开发教程》里有这方面的内容,接口是Delphi的一个重要功能。