千家信息网

AGG第二十七课 agg::conv_clip_polyline裁剪线区域

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,应用场景路径点超出渲染范围N远头文件#include"agg/include/agg_conv_clip_polyline.h"简单例子void ClipPathByPolyline(){agg::r
千家信息网最后更新 2025年01月23日AGG第二十七课 agg::conv_clip_polyline裁剪线区域

应用场景

路径点超出渲染范围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 renderer_base_type;

renderer_base_type renb(pixf);

typedef agg::renderer_scanline_aa_solidrenderder_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 polyline(ps);

polyline.clip_box(0,0,600,800);

agg::conv_dash >dash(polyline);

dash.add_dash(10,10);

agg::conv_stroke> > 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.


0