agg::conv_contour::width函数参数意义探究

    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));  


  }


你可能感兴趣的:(agg,conv)