用AGG实现高量图形输出(上).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用AGG实现高量图形输出(上)

用AGG实现高质量图形输出()AGG是一个开源、高效的跨平台2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高(自称超过GDI+) 使用前AGG的准备工作 下载AGG库,它的家在,目前最高版本是AGG2.5 解压,后面以[AGG]表示AGG的解压目录. 把[AGG]\include加入到include搜索目录中 把[AGG]\src里所有cpp加入到项目中(或者用makefile一起编译) 另外,AGG还有一些其它组件,用到时也要把它们(都是些.h和.cpp文件)加入项目: 如果要用AGG的控件和窗体,要加入[AGG]\src\ctrl\*.cpp和[AGG]\src\platform\OS\*.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顶点以及对应的命令,如MoveTo、LineTo等。 Coordinate conversion pipeline 坐标转换管道,它可以变换Vertex Source中的顶点,比如矩阵变换,轮廓提取,转换为虚线等。 Scanline Rasterizer 把顶点数据(矢量数据)转换成一组水平扫描线,扫描线由一组线段(Span)组成,线段(Span)包含了起始位置、长度和覆盖率(可以理解为透明度)信息。AGG的抗锯齿(Anti-Aliasing)功能也是在这时引入的。 Renderers 渲染器,渲染扫描线(Scanline)中的线段(Span),最简单的就是为Span提供单一颜色,复杂的有多种颜色(如渐变)、使用图像数据、Pattern等。 Rendering Buffer 用于存放像素点阵数据的内存块,这里是最终形成的图像数据。 要理解AGG的工作原理,先看一段代码: #include?agg_basics.h #include?agg_rendering_buffer.h #include?agg_rasterizer_scanline_aa.h #include?agg_scanline_u.h #include?agg_renderer_scanline.h #include?agg_pixfmt_rgb.h #include?platform/agg_platform_support.h #include?agg_ellipse.h #include?agg_conv_contour.h #include?agg_conv_stroke.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) ????{ ????} ? ????virtual?void?on_draw() ????{ ????????//Rendering?Buffer ????????agg::rendering_buffer?rbuf?=?rbuf_window(); ????????agg::pixfmt_bgr24?pixf(rbuf); ??????? ????????//?Renderers ????????typedef?agg::renderer_baseagg::pixfmt_bgr24?renderer_base_type; ????????renderer_base_type?renb(pixf); ? ????????typedef?agg::renderer_scanline_aa_solidrenderer_base_type?renderer_scanline_type; ????????renderer_scanline_type?rensl(renb); ??????? ????????//?Vertex?Source ????????agg::ellipse?ell(100,100,50,50)

文档评论(0)

drj776 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档