AGG里面大部分的函数参数都是需要高深的图形计算的知识,探究源码更是需要深厚的功底。所以现在只能够通过函数的调用,然后通过显示的图形,推导出该函数的具体含义。
结论如下:当前是通过规则的圆形来示范发现,当设置width参数为200的时候,半径是增加了100,其中的100都是以像素作为单位。每一个像素代表一个坐标点。
如下是详细的代码:
void TestContourValue()
{
agg::rendering_buffer &rbuf = rbuf_window();
agg::pixfmt_bgr24 pixf(rbuf);
typedef agg::renderer_base<agg::pixfmt_bgr24> renderer_base_type;
renderer_base_type renb(pixf);
typedef agg::renderer_scanline_aa_solid<renderer_base_type> renderder_scanline_type;
renderder_scanline_type rensl(renb);
agg::rasterizer_scanline_aa<> ras;
agg::scanline_u8 sl;
ras.reset();
agg::path_storage ps;
ps.move_to(200,200);
ps.line_to(400,200);
ps.line_to(400,400);
ps.line_to(200,400);
ps.close_polygon();
agg::conv_stroke<agg::path_storage> stroke(ps);
ras.add_path(stroke);
agg::ellipse ell(300,300,100,100);
agg::conv_stroke<agg::ellipse> stroke1(ell);
ras.add_path(stroke1);
ps.remove_all();
ps.move_to(100,100);
ps.line_to(500,100);
ps.line_to(500,500);
ps.line_to(100,500);
ps.close_polygon();
agg::conv_stroke<agg::path_storage> stroke2(ps);
ras.add_path(stroke2);
agg::conv_contour<agg::ellipse> contour(ell);
contour.width(200);
agg::conv_stroke<agg::conv_contour<agg::ellipse> > stroke3(contour);
ras.add_path(stroke3);
ps.remove_all();
ps.move_to(0,0);
ps.line_to(600,0);
ps.line_to(600,600);
ps.line_to(0,600);
ps.close_polygon();
agg::conv_stroke<agg::path_storage> stroke4(ps);
ras.add_path(stroke4);
agg::conv_contour<agg::ellipse> contour1(ell);
contour1.width(400);
agg::conv_stroke<agg::conv_contour<agg::ellipse> > stroke5(contour1);
ras.add_path(stroke5);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));
}