AGG是一個(gè)高效的、高質(zhì)量的、開源的矢量圖形庫(kù),類似的有:GTK+的Cairo,Microsoft的GDI+。在三者中,AGG的性能是最高的(不討論Skia和Direct2D,他們有OGL和DX的硬件加速,繪圖速度根本不是一個(gè)檔次的)。讓我們細(xì)數(shù)一下他的優(yōu)缺點(diǎn):
- 優(yōu)點(diǎn):效率高,質(zhì)量高(有反鋸齒),功能強(qiáng)大,跨平臺(tái)和平臺(tái)GUI支持,……
- 缺點(diǎn):沒有硬件加速,文檔少,門檻有那么點(diǎn)高,……
一、準(zhǔn)備
二、工作
- 在VC6里新建一個(gè)工程“AGG”,類型為靜態(tài)庫(kù)Win32 Static Library

- 將下列源文件都加入工程:

- ./src/ 目錄下所有cpp文件【核心庫(kù)】*
- ./src/ctrl/ 目錄下所有cpp文件【控件庫(kù)】*
- ./src/platform/ 下對(duì)應(yīng)平臺(tái)目錄(win32)下的所有cpp文件【平臺(tái)支持庫(kù)】*
- ./font_freetype/ 下所有的cpp文件【Freetype字體支持庫(kù)】
- ./font_win32_tt/ 下所有的cpp文件【Truetype字體支持庫(kù)】*
- ./gpc/ 下所有的cpp文件【Generic Polygon Clipper裁切庫(kù)】
- 將下列目錄加入Tools(工具)菜單– Options(選項(xiàng))菜單 – Directory(目錄)選項(xiàng)卡中的Include Files目錄列表中:

- ./include/ *
- ./font_freetype/
- ./font_win32_tt/ *
- ./gpc/
- 選擇配置為Win32 Release,編譯

- 編譯成功后,Tools(工具)菜單– Options(選項(xiàng))菜單 – Directory(目錄)選項(xiàng)卡中的Library Files目錄列表中加入 【工程所在目錄】\Release\

- 沒有成功編譯的童鞋,獎(jiǎng)勵(lì)已經(jīng)編譯好的AGG.lib一枚…… AGG.zip
三、測(cè)試
- 新建一個(gè)Win32 Application 空工程,新建一源文件,加入下面的代碼:
#include <agg_pixfmt_rgb.h>
#include <agg_renderer_base.h>
#include <platform/agg_platform_support.h>
class the_application : public agg::platform_support
{
public:
the_application(agg::pix_format_e format, bool flip_y) :
agg::platform_support(format, flip_y),
pix_fmt(rbuf_window()),
ren_bas(pix_fmt) //初始化渲染器
{ }
virtual void on_draw()
{
ren_bas.reset_clipping(true);
ren_bas.clear(agg::rgba8(204, 204, 204));
}
private:
agg::pixfmt_rgb24 pix_fmt;
agg::renderer_base<agg::pixfmt_rgb24> ren_bas;
};
int agg_main(int argc, char* argv[])
{
the_application app(agg::pix_format_rgb24, true);
app.caption("AGG Test");
if(app.init(500, 500, agg::window_resize)) {
return app.run();
}
return -1;
}
- 在【工程】菜單 - 【設(shè)置】菜單 - 【連接】選項(xiàng)卡 - 【對(duì)象/庫(kù)模塊】文本框 中加入AGG.lib
- 編譯運(yùn)行,不出意外,可以得到下面的結(jié)果:
