尽管 GDI+ 已经有近 10 年的历史(随 Win2000 推出), 尽管 DirectX 如日中天, 但在 Windows 7 之前的版本下进行 2D 绘图还是离不开它, 微软也没有停止对它的升级, 随 Vista 的 GDI 版本是 1.1(6.0.xxxx.x), 新增了 Blur 等功能.

不过 Win7 已经有了 Direct D2D1, Delphi 也同步有了 Direct2D 支持; 这是可以代替 GDI+ 的东西, 但听说 D2D1 可以很好地与 GDI+ 结合.

之前我在 Delphi 中使用 GDI+ 是用的 http://www.progdigy.com/?page_id=7, 它很早了, 也只支持 GDI+1.0.


现在有了新的 GdiPlus(当前版本是 1.2, 2009 更新), 我大概浏览了一下, 有以下感觉:
1、支持 GDI+1.1; 我现在用 XP, 还是 1.0 的 GDI+, 不过 1.1 增加的东西不是很多.
2、命名与结构尽量靠近 Net; 这相当于同时学习了 Net 下的 2D 绘图, 同时可以更方便地参考 msdn 的帮助.
3、提倡使用接口(而不是类, 甚至禁止直接使用类)和结构, 这样可以节省大量代码(甚至不需要写一个 xxx.Free).
4、使用了 Helper、运算符重载、泛型等 Delphi 的新语法, 所以只适用于 Delphi 2009 之后的版本.

总之, 比之前任何时候都方便、实用; 相比 Net , 实现同样的功能至少也能节省 1/3 的代码!


相关网址:

http://cc.embarcadero.com/Item/26950

http://www.bilsen.com/gdiplus

http://www.bilsen.com/gdiplus/GdiPlus1.2.zip


借着 GdiPlus 又要复习一下 GDI+ 了, 其实以前的学习都还不彻底.


下载后把 Lib 下的 GdiPlus.pas、GdiPlusHelpers.pas 两个文件载入库路径(Tools -> Options -> Library-Win32 -> Library path)即可使用了.

如果你也需要测试后面的示例, 需要知道: 我把 Demos\Bin\ 下的所有示例图片都复制到了 C:\GdiPlusImg\.

第一个例子, 显示一张图片只需要两行代码:


uses GdiPlus, GdiPlusHelpers;

procedure TForm1.FormPaint(Sender: TObject);
var
  Image: IGPImage;
begin
  Image := TGPImage.Create('C:\GdiPlusImg\Grapes.jpg');
  Canvas.ToGPGraphics.DrawImage(Image, , );
end;

GdiPlus 一个给 Delphi 提供的新的 GDI+ 接口很好用!的更多相关文章

  1. Delphi 7以来的Delphi 2009测试版新语法特性

    我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...

  2. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  3. 【Android Developers Training】 94. 创建一个空内容提供器(Content Provider)

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. HTML5_提供的 新功能_less 编译_

    HTML5_提供的 新功能 class 操作 ele.classList(注意: 高版本的 IE 都不支持) 获取 <div id="ele" class="... ...

  5. [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

    9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 众所周知,对现有应用程序的接口 ...

  6. 一个列子演示vs2010 c++新特性

    近日托安装雪豹的"福",格了XP装了win7,前段时间看了C++0X标准以及VS2010诱人的新特性,不禁心痒痒在线安装了VS2010,然后手写了这个列子用来测试新增的特性. st ...

  7. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  8. 分享一个jsonp劫持造成的新浪某社区CSRF蠕虫

    最近jsonp很火,实话说已经是被玩烂了的,只是一直没有受到大家的重视.正好在上个月,我挖过一个由于jsonp造成的新浪某社区CSRF,当时是为了准备一篇文章,之后这篇文章也会拿出来分享. 因为新浪已 ...

  9. delphi 属性 参数 新注释

    delphi 属性 参数 新注释,在写代码的时候,可以自动看到属性.参数的的备注说明,太方便了. Tmyclass=class /// <summary> /// 姓名 /// </ ...

随机推荐

  1. Mysql学习笔记(002)-基础查询

    基础查询 # 进阶1:基础查询 /* 语法: select 查询列表 from 表名: 类似于:system.out.println(打印东西); 特点: 1.查询列表可以是:表中的字段,常量值,表达 ...

  2. Vulhub-漏洞环境的搭建

    安装Docker #安装pip curl -s https://bootstrap.pypa.io/get-pip.py | python3 #安装最新版docker curl -s https:// ...

  3. Vue学习笔记【14】——自定义指令

    1.自定义全局和局部(私有)自定义指令 // 自定义全局指令 v-focus,为绑定的元素自动获取焦点: ​ Vue.directive('focus', { ​ inserted: function ...

  4. PHP ftp_chdir() 函数

    定义和用法 ftp_chdir() 函数改变 FTP 服务器上的当前目录为指定目录. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE 和一个警告. 语法 ftp_chdir(ftp_co ...

  5. Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

    从编程开发的角度来说,Apache Dubbo (以下简称 Dubbo)首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节.同时 Dubb ...

  6. (转)NAT与NAT穿越学习总结--ICE过程讲的不错

    转:http://cgs1999.iteye.com/blog/1994072 1.引言网络地址转换(Network Address Translation,简称NAT)是一种在IP分组通过路由器或防 ...

  7. 用java打开一个本地文件

    以下有三种方式打开 /** * 借助java.awt.Desktop打开 * @see 打开的目录或文件名中允许包含空格 */ private static void useAWTDesktop() ...

  8. Maven项目上有小红叉咋办

    Maven项目上有小红叉咋办 创建maven项目之后,war工程如果目录不全的话会出现错误.这种情况就是把目录补全就可以了. 这种情况版本问题,点击那个最新版本的,会自动给加一段代码.(如果没有就自己 ...

  9. Java学习之集合(Collection接口)

    集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储 集合特点: 1.用于存储对象的容器 2.集合长度可变 3.不可以存储基本数据类型 集合体系的顶层C ...

  10. sed use case: Filter without editing

    if we want to filter with sed pattern and just print the filtered lines without any further editing ...