AGG第三十三课line_profile_aa参数分析说明-创新互联

1 前言
       agg::line_profile_aa是agg::renderer_outline_aa渲染线段的属性设置类,aa就是anti-aliased的意思,具有抗锯齿功能

创新互联公司网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为网站设计制作、网站制作,成都APP应用开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联公司深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

2 函数功能说明
        如下简单介绍一下对于线段的属性设置,主要是调用agg::line_profile_aa对象的成员函数:
agg::line_profile_aa::min_width()
        字面上理解就是设置最小线宽。如果指定的线宽小于min_width函数的设置值,线段将会被化成透明色(brightness fading).如果将min_width()设置为零,线段看起来就扭成一团。默认设置为1.
agg::line_profile_aa::smoother_width()
        控制线的模糊程度。如果设置为3,厚线看起来相当模糊。这是该算法的一大优势。如果设置为零,将会得到一些楼梯似得折线(regular,terriblystair-looking).默认值是1.0。
agg::line_profile_aa::gamma()
        修改抗锯齿的gamma-correction参数值。主要是调用agg_gamma_functions.h文件中的
gamma-functions,当然也可以构建自己的版本。
 
注意:只有width函数生成线段的轮廓。这意味着如果通过min_width函数,smoother_width,
gamma函数,修改agg::line_profile_aa对象,必须重新调用width函数才能够生效。
scanline rasterizer采用默认的参数值,线段看以来也是相当平滑的.
3 开销以及原理
        该类创建一个数组,存储相互依赖的距离,主要是alpha值,实际上是理想线与像素中间的亚像素距离。她意味着该抗锯齿算法是基于距离的,而扫描线(scanline rasterizer)光栅器是基于区域的。所以两者之间是有区别的(可以确定一点她看起来更好些)。同时也意味着创建agg::line_profile_aa需要一些开销。主要是填充尺寸为(width/2+6)的数组。一旦修改了线段的宽度(调用agg::line_profile_aa::width(w)),将会重新进行填充。尽管不是开销太多,但还是会有的。 
提供如下的策略方案:
1)可以创建一个line_profile_aa对象,然后需要的时候,调用该对象的width函数修改线宽
2)可以预先创建一些line_profile_aa对象,然后通过agg::renderer_outline_aa::profile
函数,重新设置line_profile_aa的引用。
 
最后一种方案是一种不错的选择,例如在GIS系统中,当需要渲染复杂的地图,线段的数量是确定的,但是线宽不同。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:AGG第三十三课line_profile_aa参数分析说明-创新互联
本文URL:http://myzitong.com/article/gsjog.html