打造类.NET带垃圾回收功能的Delphi版GDIPlus

 好久没来博客了.

就凑合着添加一些东西吧.把最近开发的顺带的东西放出来

 

因为开发要用到GDIPlus,在网上收集到了毛泽发封装的GDIPlus源代码.封装的非常好.
为了和.NET进一步接近,把他们都改成接口模式的.能够实现垃圾回收.
在毛泽发的GDIPlus基础上把所有的GDIPlus对象都变成接口方式,生存期自动管理.可以像C#一样用完不管释放.
另外本开发包适用于Delphi5-Delphi2009中的任意版本.包括Delphi5和Delphi2009

正在上传到盒子上面.上传成功的话我贴出链接.

 

盒子太慢了.上传到了CSDN上.

http://download.csdn.net/source/765656

var
  g : IGpGraphics;
  RedPen : IGpPen;
  Img : IGpImage;
  r : TGpRectF;
begin
  inherited;
  g := NewGpGraphics(Canvas.Handle);  //创建GDIPlus绘图对象
  RedPen := NewGpPen(kcRed, 3.0);   //创建画笔
  g.SmoothingMode := smHighQuality;//抗锯齿
  g.DrawArc(Pens.Blue ,10, 10, 100, 100, 0, 360);//用系统内置的画笔画圆
  g.DrawArc(RedPen ,30, 30, 100, 100, 0, 360); //用刚才创建的画笔画圆

  g.DrawRectangle(RedPen, 100.0, 100.0, 30, 30); //画矩形
  g.TranslateTransform(200.0, 200.0); //坐标平移
  g.RotateTransform(30); //旋转30度
  g.DrawRectangle(RedPen, - 50, - 50, 100, 100); //画矩形(偏30度)
  Img := NewGpBitmap(ExtractFilePath(ParamStr(0)) + '美女24.bmp');;
  r := GpRect(0.0, 0.0, 80, 80);
  g.RotateTransform(30); //再旋转30度
  g.ScaleTransform(0.2, 0.2);  //缩小到0.2
  g.DrawImage(Img, 150, 150); //贴美女图
  g.RotateTransform(-90); //再旋转-90度
  g.ScaleTransform(3, 3);  //再扩大6倍
  g.DrawImage(Img, 150,-150); //贴美女图
  g.ResetTransform(); //恢复坐标

  //注意,因为都是接口.所以前面创建出来的东西都不需要释放.离开函数自动会析构他们的
end;

 

 

原文地址:https://www.cnblogs.com/ljl_falcon/p/2420943.html