新聞中心
1 前言
?????? agg::line_profile_aa是agg::renderer_outline_aa渲染線段的屬性設(shè)置類,aa就是anti-aliased的意思,具有抗鋸齒功能
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的通道網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
2 函數(shù)功能說明
??????? 如下簡(jiǎn)單介紹一下對(duì)于線段的屬性設(shè)置,主要是調(diào)用agg::line_profile_aa對(duì)象的成員函數(shù):
agg::line_profile_aa::min_width()
??????? 字面上理解就是設(shè)置最小線寬。如果指定的線寬小于min_width函數(shù)的設(shè)置值,線段將會(huì)被化成透明色(brightness fading).如果將min_width()設(shè)置為零,線段看起來就扭成一團(tuán)。默認(rèn)設(shè)置為1.
agg::line_profile_aa::smoother_width()
??????? 控制線的模糊程度。如果設(shè)置為3,厚線看起來相當(dāng)模糊。這是該算法的一大優(yōu)勢(shì)。如果設(shè)置為零,將會(huì)得到一些樓梯似得折線(regular,terriblystair-looking).默認(rèn)值是1.0。
agg::line_profile_aa::gamma()
??????? 修改抗鋸齒的gamma-correction參數(shù)值。主要是調(diào)用agg_gamma_functions.h文件中的
gamma-functions,當(dāng)然也可以構(gòu)建自己的版本。
?
注意:只有width函數(shù)生成線段的輪廓。這意味著如果通過min_width函數(shù),smoother_width,
gamma函數(shù),修改agg::line_profile_aa對(duì)象,必須重新調(diào)用width函數(shù)才能夠生效。
scanline rasterizer采用默認(rèn)的參數(shù)值,線段看以來也是相當(dāng)平滑的.
3 開銷以及原理
??????? 該類創(chuàng)建一個(gè)數(shù)組,存儲(chǔ)相互依賴的距離,主要是alpha值,實(shí)際上是理想線與像素中間的亞像素距離。她意味著該抗鋸齒算法是基于距離的,而掃描線(scanline rasterizer)光柵器是基于區(qū)域的。所以兩者之間是有區(qū)別的(可以確定一點(diǎn)她看起來更好些)。同時(shí)也意味著創(chuàng)建agg::line_profile_aa需要一些開銷。主要是填充尺寸為(width/2+6)的數(shù)組。一旦修改了線段的寬度(調(diào)用agg::line_profile_aa::width(w)),將會(huì)重新進(jìn)行填充。盡管不是開銷太多,但還是會(huì)有的。?
提供如下的策略方案:
1)可以創(chuàng)建一個(gè)line_profile_aa對(duì)象,然后需要的時(shí)候,調(diào)用該對(duì)象的width函數(shù)修改線寬
2)可以預(yù)先創(chuàng)建一些line_profile_aa對(duì)象,然后通過agg::renderer_outline_aa::profile
函數(shù),重新設(shè)置line_profile_aa的引用。
?
最后一種方案是一種不錯(cuò)的選擇,例如在GIS系統(tǒng)中,當(dāng)需要渲染復(fù)雜的地圖,線段的數(shù)量是確定的,但是線寬不同。
文章題目:AGG第三十三課line_profile_aa參數(shù)分析說明
鏈接地址:http://www.ef60e0e.cn/article/jecgii.html