AGG第三十六课 gsv_text_outline 渲染环绕的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AGG第三十六课 gsv_text_outline 渲染环绕的字符相关的知识,希望对你有一定的参考价值。

  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计算路径的长度,可以方便部署每一个字符所在的位置(相对于起点),第二个参数是指定字符偏离路径的宽度,正负数值分别是在内测还是外侧进行偏离


以上是关于AGG第三十六课 gsv_text_outline 渲染环绕的字符的主要内容,如果未能解决你的问题,请参考以下文章

第三十六课文本编辑器中的功能交互

AGG第二十六课 裁剪功能

gsv_text_outline 渲染环绕的字符

AGG第三十五课 gsv_text 渲染ASCII字符

AGG第三十三课 line_profile_aa 参数分析说明

AGG第三十九课 rasterizer_scanline_aa画线函数疑惑