齐白:AGG 组合类线段生成器
来源:百度文库 编辑:九乡新闻网 时间:2024/05/15 13:08:48
AGG 组合类线段生成器2010-07-11 22:05
组合类线段生成器
头文件
类型
- template
- class agg::span_converter;
span_converter的作用是组合两种生成器,比如先由图案类线段生成器产生图案,然后由色彩类线段生成器产生半透明色叠加在图案上。
下面的演示代码演示了怎样组合span_image_filter_rgb_bilinear_clip和span_gradient_alpha两种生成器
演示代码,同样基于这个代码,加入下面的头文件
- #include "agg_span_allocator.h"
- #include "agg_span_gradient_alpha.h"
- #include "agg_span_converter.h"
- #include "span_image_filter_rgb_bilinear_clip.h"
在on_draw()方法的最后加上下面这些代码
- agg::pixel_map pm_img;
- if(pm_img.load_from_bmp("d:\\spheres.bmp"))
- {
- // pm_img里的图案作为填充来源
- agg::rendering_buffer rbuf_img(
- pm_img.buf(),
- pm_img.width(), pm_img.height(),
- -pm_img.stride());
- agg::pixfmt_bgr24 pixf_img(rbuf_img);// 我用的bmp是24位的
- // 线段分配器
- typedef agg::span_allocator span_allocator_type;//分配器类型
- span_allocator_type span_alloc; // span_allocator
- // 插值器
- typedef agg::span_interpolator_linear<> interpolator_type; //插值器类型
- agg::trans_affine img_mtx; // 变换矩阵
- interpolator_type ip_img(img_mtx); // 插值器
- agg::trans_affine alpha_mtx; // 变换矩阵
- interpolator_type ip_alpha(alpha_mtx); // 插值器
- // 渐变方式
- typedef agg::gradient_x gradientF_type;
- gradientF_type grF;
- typedef std::vector alphaF_type;
- alphaF_type alphaF(256);
- for(int i=0; i<256; i++) alphaF[i] = i;
- // Alpha线段生成器
- typedef agg::span_gradient_alpha interpolator_type,
- gradientF_type,
- alphaF_type> alpha_span_gen_type;
- alpha_span_gen_type alpha_span_gen(ip_alpha,grF,alphaF,0,150);
- // 图案线段生成器
- typedef agg::span_image_filter_rgb_bilinear_clip interpolator_type > pic_span_gen_type;
- pic_span_gen_type pic_span_gen(pixf_img, agg::rgba(0,1,0), ip_img);
- // 使用span_converter组合成新的线段生成器
- typedef agg::span_converter
span_gen_type; - span_gen_type span_gen(pic_span_gen,alpha_span_gen);
- // 组合成渲染器
- agg::renderer_scanline_aa<
- renderer_base_type,
- span_allocator_type,
- span_gen_type
- > my_renderer(renb, span_alloc, span_gen);
- // 插值器的矩阵变换
- img_mtx.scale(0.5);
- img_mtx.translate(40,40);
- img_mtx.invert(); //注意这里
- // 用我们的渲染器画圆
- ras.add_path(ccell);
- agg::render_scanlines(ras,sl,my_renderer);
- }
显示效果
<<待续>>
AGG 组合类线段生成器
AGG 色彩类线段生成器
AGG 线段生成器(Span Generator)
AGG 成果
AGG AGG与FreeType库
AGG 渲染器(Renderers)
AGG 插值器(Interpolator)
AGG 字体缓存管理器
线段二
线段树
身份证号码生成器
AGG 光栅化(Scanline Rasterizer)
AGG 渲染缓存(Rendering Buffer)
组合!
佘氏尺规三等分线段
线段 射线 直线
分型、笔、线段
缠论线段操作法
线段再分辨
如何划分线段?
用AGG实现高质量图形输出
AGG 坐标转换管道(Coordinate conversion pipeline)
AGG 使用字体引擎(Font Engine)
FLASH时钟自动生成器,