gg: 1: conv_strokeagg: conv_strokeagg: conv_stroke
gg:: conv_contouragg: conv_contouragg: trans_affine McSeem
一行一般是complexobjectthan多边形。嗯,除非它是一个简单的锯齿状Bresenham线。所有linesareeventually转化为多边形,代表他们的轮廓。因此,在现代图形没有行,有* *。And conv_strokedoesthis job
2
examples/conv_stroke
1
2
3
4miter limit
3
1
enum line_cap_e
{
butt_cap,//
square_cap,//butt_cap
round_cap//
};
voidline_cap(line_cap_e lc)
2
voidwidth(double w)
3stroke
line_cap,widthstroke
m_width(0.5),
m_width_abs(0.5),
m_width_eps(0.5/1024.0),
m_width_sign(1),
m_miter_limit(4.0),
m_inner_miter_limit(1.01),
m_approx_scale(1.0),
m_line_cap(butt_cap),
m_line_join(miter_join),
m_inner_join(inner_miter)
4agg::conv_stroke
agg::conv_dash
agg::conv_dash
4
ras.reset();
agg::path_storage ps1;
ps1.move_to(200,200);
ps1.line_to(300,300);
agg::line_cap_e cap=agg::round_cap;//
agg::conv_stroke
stroke.line_cap(cap);
stroke.width(50);//
ras.add_path(stroke);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));
5 shorten
1
conv_strokeconv_dashagg_conv_shorten_path
2
m_slider1(80, 250, 600-10,276, !flip_y)
add_ctrl(m_slider1);
m_slider1.range(0,300);
m_slider1.num_steps(30);
m_slider1.value(1);
//
agg::ellipse ell1(230,230,140,150);
agg::conv_stroke
stroke1.width(30);
stroke1.shorten(m_slider1.value());
ras.add_path(stroke1);
//
agg::path_storage ps;
ps.move_to(20,30);
ps.line_to(440,30);
agg::conv_stroke
stroke2.width(30);
stroke2.shorten(m_slider1.value());
ras.add_path(stroke2);