盡管 GDI+ 已經有近 10 年的歷史(隨 Win2000 推出), 盡管 DirectX 如日中天, 但在 Windows 下進行 2D 繪圖還是離不開它, 微軟也沒有停止對它的升級, 隨 Vista 的 GDI 版本是 1.1(6.0.xxxx.x), 新增了 Blur 等功能.
之前我在 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, 10, 10);
end;