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_bin_solid<renderer_base_type> renderder_scanline_type;
renderder_scanline_type rensl(renb);
agg::rasterizer_scanline_aa<> ras;
agg::scanline_u8 sl;
ras.reset();
renb.clear(agg::rgba8(255,255,255));
agg::ellipse ell(400, 100, 100, 100);
agg::conv_stroke<agg::ellipse> stroke(ell);
ras.add_path(stroke);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255, 0, 0));
ras.reset();
agg::gsv_text txt;
agg::trans_single_path transPath;
transPath.add_path(ell);
agg::gsv_text_outline<agg::trans_single_path> txtOutLine(txt, transPath);
txt.flip(true);
txt.size(10);
txt.start_point(100, -15);
txt.space(5);//字符之间的间距
txt.text("http://fengyuzaitu.blog.51cto.com");
ras.add_path(txtOutLine);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255, 0, 0));
ras.reset();
注意:
1 start_point指定的方向不再是真实的屏幕坐标,而是相对于顶点源的起始渲染坐标,当前渲染的椭圆是从椭圆的最右边的点,顺时针开始渲染,第一个参数可以理解为在渲染的弧线上距离起点多远的路程之后开始渲染字符,其中trans_single_path提供了total_length计算路径的长度,可以方便部署每一个字符所在的位置(相对于起点),第二个参数是指定字符偏离路径的宽度,正负数值分别是在内测还是外侧进行偏离
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。