赞
踩
线段生成器(Span Generator)我们前面举的例子使用的都是简单的单一实色,如蓝色的圆、黑色的线等。这是因为在例子里我们一直使用renderer_scanline_aa_solid或render_scanlines_aa_solid。 在上篇文章(http://www.cppprog.com/2009/0821/150.html)的渲染器一节中除了renderer_scanline_aa_solid外,还提到有一个renderer_scanline_aa,这里再写一遍它的声明:
另外,还有一个函数版本:
renderer_scanline_aa (还有一个兄弟版本renderer_scanline_bin)可以按指定的图案或不同的颜色(如渐变)填充顶点源里的多边形。其中的模板参数 SpanAllocator用于准备span,我们直接使用agg::span_allocator就行。这里的SpanGenerator就是本节要说的线段生成器,它决定了最终用什么东西填到rendering_buffer里。 线段生成器品种很多,常用的在致可以分成图案类和色彩类两大部分:图案类线段生成器使用已有图像作为span来源;色彩类线段生成器使用指定的颜色作为span来源。 图案类线段生成器头文件
类型
上面这些线段生成器类的模板参数都比较相似:Source用于指定图像来源,可以是PixelFormat renderer或agg::image_accessor_clip(由不同的线段生成器类决定);Interpolator是一种插值器,用于填充图像间隙。我们先写一段示例代码,先看一下线段生成器的作用,也为后面的各种实验做准备。 示例代码,使用span_image_filter_rgb_bilinear_clip还是基于这个代码(http://www.cppprog.com/2009/0816/146.html),加入下面的头文件
在on_draw()方法的最后加上下面这些代码
其中的d://spheres.bmp(下载)是我预先放在D盘里的24位bmp图像,作为填充的来源。 显示效果:
作者:毛毛 来源:www.cppprog.com |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。