应用场景
路径点超出渲染范围N远
头文件
#include"agg/include/agg_conv_clip_polyline.h"
简单例子
void ClipPathByPolyline()
{
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(100,540);
ps.line_to(168.889,471.429);
ps.line_to(237.778,402.857);
ps.line_to(306.667,334.286);
ps.line_to(651.111,-8.57143);
ps.line_to(720,-6.85714e+19);
ps.line_to(200,400);
ps.line_to(400,400);
ps.line_to(200,500);
ps.line_to(700,400);
agg::conv_clip_polyline<agg::path_storage> polyline(ps);
polyline.clip_box(0,0,600,800);
agg::conv_dash<agg::conv_clip_polyline<agg::path_storage> >dash(polyline);
dash.add_dash(10,10);
agg::conv_stroke<agg::conv_dash<agg::conv_clip_polyline<agg::path_storage>> > stroke(dash);
stroke.width(2);
ras.add_path(stroke);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));
}
限制:
Here the lines will be clipped beforecalculating the rest. But if you have
very wide lines you will see some defects
To avoid it you may want to extend theclipping area to the maximal line width.
本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1962525,如需转载请自行联系原作者