
AGG
文章平均质量分 83
bitasd
这个作者很懒,什么都没留下…
展开
-
开源2D图形库AGG研究(一)
AGG(Anti-Grain Geometry),强大的2D几何图形库。因为GDI+的一些缺陷(不能跨平台,某些应用场合精度差),我一直在寻求可以替换gdi+绘图组件的方案,最终我选择了AGG,提供亚像素精度显示效果,反锯齿效果超好,跨平台,代码精致亦适合嵌入式开发。网上关于2D图形库的组件非常多,类似的还有GOOGLE PICASSO,CAIRO(firefox底层采用的渲染器),Q转载 2011-06-09 20:18:00 · 3054 阅读 · 0 评论 -
AGG 渲染缓存(Rendering Buffer)
Rendering BufferRendering Buffer是一个内存块,用于保存图像数据。这是AGG与显示器之间的桥梁,我们要显示AGG图形实际上就是识别这个内存块并使用系统的API显示出来 而已(实际上几乎不需要做转换工作,因为无论是Windows还是Linux,API所用的图像存储格式与Rendering Buffer都是兼容的)。头文件:#include转载 2011-06-10 11:36:00 · 1943 阅读 · 0 评论 -
AGG 线段生成器(Span Generator)
线段生成器(Span Generator)我们前面举的例子使用的都是简单的单一实色,如蓝色的圆、黑色的线等。这是因为在例子里我们一直使用renderer_scanline_aa_solid或render_scanlines_aa_solid。在上篇文章(http://www.cppprog.com/2009/0821/150.html)的渲染器一节中除了renderer转载 2011-06-10 11:37:00 · 1580 阅读 · 0 评论 -
AGG 插值器(Interpolator)
插值器Interpolator插值器的作用是连接目标位置和源位置,比如要填充一个8*8的图形,对应的填充源是一个4*4的图像,一种简单的线性插值器就要根据目标的位置线性计算得到源对应的位置,如目标点(4,4)、(4,5)、(5,4)、(5,5)这几个位置点对应到源的(2,2)点上。头文件#include #include #include转载 2011-06-10 11:39:00 · 1004 阅读 · 0 评论 -
AGG 图像访问器(Image Accessor)
图像访问器Image Accessor也许有不少同学看到开头的线段生成器一节时,已经尝试修改示例代码中的span_image_filter_rgb_bilinear_clip了(比如改成span_image_filter_rgb_bilinear)。不过编译时会出错,这是因为大部分的线段生成器类接受的Source模板不是 PixelFormat Renderer,而是Image Acces转载 2011-06-10 11:42:00 · 1169 阅读 · 0 评论 -
AGG 色彩类线段生成器
色彩类线段生成器头文件#include #include #include #include #include 类型templateclass ColorT> class agg::span_solid; templateclass ColorT, class Interpolator,转载 2011-06-10 13:27:00 · 1350 阅读 · 0 评论 -
AGG的字符输出
字符输出,对于AGG来说,这个功能可以处于显示流程的 不同位置。比如字体引擎可直接处于“Scanline Rasterizer”层向渲染器提供已处理完毕的扫描线,也可以处于“Vertex Source顶点源”层提供字体的顶点数据。 下面,我们开始学习AGG不同的字符输出方式。如没有特殊说明,所以示例代码都基于此处代码方式一、使用gsv_text对象转载 2011-06-10 13:34:00 · 1190 阅读 · 0 评论 -
AGG 渲染器(Renderers)
Renderers 渲染器渲染器负责表现扫描线Scanline中的每个线段(span)。在渲染器之前,AGG图形中的线段是没有颜色值的,只是位置、长度和 覆盖率(透明度)。渲染器赋于线段色彩,最终成为一幅完整的图像。渲 染器被分成底中高三层。其中底层负责像素包装,由PixelFormat Renderer实现;中层是基础层,在PixelFormat Renderer的基础上提供更多方法转载 2011-06-10 11:33:00 · 1501 阅读 · 0 评论 -
AGG AGG与FreeType库
Linux、 FreeBSD等开源操作系统里一般使用FreeType来显示文字,Windows下的一些软件如Foxit也有FreeType的身影。AGG的font_engine_freetype_int16字 体引擎就使用FreeType来取得字模,在Windows里,在使用font_engine_freetype_int16之前,我们得先编译好 FreeType:转载 2011-06-10 13:45:00 · 2228 阅读 · 1 评论 -
AGG 顶点源(Vertex Source)
顶点源(Vertex Source)顶点源是一种可以产生多边形所需要的“带命令的顶点”的对象。比如三角形顶点源,就应该会产生一个带“MoveTo”命令的点,另外二 个带"LineTo"命令的点和最终闭合的“ClosePoly”命令。头文件#include //path_storage#include // ellipse#include // arc#inclu转载 2011-06-10 11:21:00 · 1519 阅读 · 1 评论 -
用AGG实现高质量图形输出(一)
来自http://www.cppprog.com/2009/0816/146.html AGG是一个开源、高效的跨平台2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高(自称超过GDI+) 使用前AGG的准备工作下载AGG库,它的家在http://www.antigrain.com,目前最高版本是AGG2.5转载 2011-06-09 20:04:00 · 3325 阅读 · 0 评论 -
用AGG实现高质量图形输出(三)
线段生成器 (Span Generator) 我们前面举的例子使用的都是简单的单一实色,如蓝色的圆、黑色的线等。这是因为在例子里我们一直使用 renderer_scanline_aa_solid 或 render_scanlines_aa_solid 。 在上 线段生成器(Span Generator)我们前面举的例子使用的都是简单的单一实色,如蓝色的圆、黑色的线等。这是转载 2011-06-09 20:40:00 · 1963 阅读 · 0 评论 -
用AGG实现高质量图形输出(四)
本文介绍了 AGG 输出字符的几种方法:自带的 gsv_text 对象、 WinAPI 字体引擎、 FreeType 字体引擎以及字体缓存管理器。并简单介绍了 FreeType 在 VC 和 C++Builder 里的编译方法。 AGG 的字符输出本文介绍了AGG输出字符的几种方法:自带的gsv_text对象、WinAPI字体引擎、FreeType字体引擎以及字体缓存管理器。并简单介绍了 Free转载 2011-06-09 20:46:00 · 1707 阅读 · 0 评论 -
AGG 坐标转换管道(Coordinate conversion pipeline)
Coordinate conversion pipeline 坐标转换管道坐标转换管道用于改变顶点源产生的顶点,包括坐标、命令、产生新顶点等。如对顶点进行矩阵变换、插入顶点形成虚线之类的功能。变换矩阵(trans_affine)在认识转换管道之前,先了解一下AGG的变换矩阵。通过顶点坐标与矩阵的运行,我们可以得到新的坐标。关于图像的矩阵运算,MSDN里 有一篇关 于转载 2011-06-10 11:29:00 · 1660 阅读 · 2 评论 -
AGG 组合类线段生成器
组合类线段生成器头文件#include 类型templateclass SpanGenerator, class SpanConverter> class agg::span_converter; span_converter的作用是组合两种生成器,比如先由图案类线段生成器产生图案,然后由色彩类线段生成器产生半透明色叠加在图案上。下转载 2011-06-10 13:29:00 · 1151 阅读 · 0 评论 -
AGG 字体缓存管理器
方式三、使用字体缓存管理器每次都重新读字模是很费时的,比如前面的例子,"C++" 里的两个+ 就读两次字模,效率可以想象。一个好的办法是把已读出来的字模缓存起来,下次再遇到这个字时就不用从字体引擎里读取了,AGG提供的font_cache_manager类就是 负责这项工作的。头文件#include "agg_font_cache_manager.h"转载 2011-06-10 13:46:00 · 1492 阅读 · 0 评论 -
用AGG实现高质量图形输出(二)
来自http://www.cppprog.com/2009/0821/150.html 上次讲了AGG的显示原理并举了一个简单的例子,这一篇文章开始讲AGG工作流程里的每个环节。为了方便对照,再放一次AGG显示流程 图 另外,上 一篇文章里的例 程也 很重要,后面的例子都将基于这个代码。下面,我们来考察AGG显示流程中的每个环节。理解每个环节最好的方法是编写实验代码,转载 2011-06-09 20:06:00 · 2199 阅读 · 0 评论 -
AGG 光栅化(Scanline Rasterizer)
Scanline RasterizerScanline Rasterizer能够把顶点数据转换成一组水平扫描线,扫描线由一组线段(Span)组成,线段(Span)包含了起始位置、长度和覆盖率(可以理解 为透明度)信息。AGG的抗锯齿(Anti-Aliasing)功能也是在这时引入的。扫描线Scanline扫描线是一种保存span的容器,span用于表示一小条(水平方向)细线。图像中转载 2011-06-10 11:30:00 · 2100 阅读 · 0 评论 -
AGG 使用字体引擎(Font Engine)
方式二、使用字体引擎(Font Engine)AGG的字体引擎利用WinAPI:GetGlyphOutline或FreeType库得到字体数据(字模),它可以处于 “Scanline Rasterizer”层或“顶点源”层。要使用字体引擎,要把相应的字体引擎源码(agg_font_win32_tt.cpp或 agg_font_freetype.cpp)加入项目一起编译。头文件转载 2011-06-10 13:40:00 · 2964 阅读 · 2 评论 -
AGG 成果
作为本文的结尾,这里放上一个用AGG生成不规则文字窗体的代码。它综合了我们之前学到的AGG字体引擎、坐标转换、颜色渐变等几大模 块。由于AGG的抗锯齿特性,使用生 成的窗体看上去边缘过渡非常自然,几乎看不到“毛边”。先放上最终生成的窗体的效果:貌似比网页左上角的logo还要好看那么一点点-_- #define _WIN32_W转载 2011-06-10 13:53:00 · 1336 阅读 · 0 评论