1引言
在整个实验的过程中,很多的例子都会使用agg::conv_contour
这个部件,然后大家异口同声的说:进行轮廓变换!!构造参数为VertexSource
width属性决定扩展或收缩轮廓。是在已有的例子中,即使去除该部件的转换,也
没有看到有什么的异样!!
网上提供的一般逻辑:
矩阵变换agg::conv_transform
轮廓变换agg::conv_contour
转换成多义线agg::conv_stroke
2代码分析:
conv_contour实际上是由vcgen_contour
真正实现的!!几乎所有的实现都是调用了vcgen_contour
的generator函数
一个简单的测试例子:
agg::ellipse ell(100,100,50,50);
agg::trans_affine mtx;
mtx.scale(2,1);
typedef agg::conv_transform<agg::ellipse> ell_ct_type;
ell_ct_type ctell(ell, mtx);
/************/
typedef agg::conv_contour<ell_ct_type> ell_cc_type;
ell_cc_type ccell(ctell); // 轮廓变换
ccell.width(6);//nothing happen
/************/
typedef agg::conv_stroke<ell_cc_type> ell_cc_cs_type;
ell_cc_cs_type csccell(ccell);
//csccell.width(6);
ras.add_path(ccell);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));