AGG高质量图形输出

AGG是一个开源、高效的跨平台2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高(自称超过GDI+);

使用前AGG的准备工作

? 下载AGG库,它的家在http://www.antigrain.com/,目前最高版本是AGG2.5 ? 解压,后面以[AGG]表示AGG的解压目录. ? 把[AGG]\\include加入到include搜索目录中

? 把[AGG]\\src里所有cpp加入到项目中(或者用makefile一起编译)

? 另外,AGG还有一些其它组件,用到时也要把它们(都是些.h和.cpp文件)加入项目:

?

如果要用AGG的控件和窗体,要加入[AGG]\\src\\ctrl\\*.cpp和

[AGG]\\src\\platform\\\\*.cpp,头文件在[AGG]\\include\\ctrl和[AGG]\\include\\platform里

? 如果要用到TrueType字体显示,要加入[AGG]\\font_win32_tt目录下的源码和头文件。利用freetype库,则是[AGG]\\font_freetype目录。

? 如果要用到Generic Polygon Clipper库(一个区域剪裁计算库),加入[AGG]\\gpc目录下的源码和头文件。

AGG图形显示原理见下图:

其中:

? Vertex Source 顶点源,里面存放了一堆2D顶点以及对应的命令,如\、

\等。

? Coordinate conversion pipeline 坐标转换管道,它可以变换Vertex Source中的顶点,

比如矩阵变换,轮廓提取,转换为虚线等。

? Scanline Rasterizer 把顶点数据(矢量数据)转换成一组水平扫描线,扫描线由一组线段(Span)组成,线段(Span)包含了起始位置、长度和覆盖率(可以理解为透明度)信息。AGG的抗锯齿(Anti-Aliasing)功能也是在这时引入的。

? Renderers 渲染器,渲染扫描线(Scanline)中的线段(Span),最简单的就是为Span提供单一颜色,复杂的有多种颜色(如渐变)、使用图像数据、Pattern等。

?? Rendering Buffer 用于存放像素点阵数据的内存块,这里是最终形成的图像数据。 要理解AGG的工作原理,先看一段代码:

? #include \

? #include \

? #include \? #include \? #include \? #include \

? #include \? #include \? #include \?? #include \

?? class the_application : public agg::platform_support ?? {

?? public:

?? the_application(agg::pix_format_e format, bool flip_y) : ?? agg::platform_support(format, flip_y) ?? ?? ?? ?? ?? ?? ?? ??

{ }

virtual void on_draw() {

?? //Rendering Buffer

agg::rendering_buffer &rbuf = rbuf_window(); agg::pixfmt_bgr24 pixf(rbuf);

// Renderers

?? typedef

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4