AGG第三十六课 gsv_text_outline 渲染环绕的字符
2017-09-08 10:43
239 查看
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计算路径的长度,可以方便部署每一个字符所在的位置(相对于起点),第二个参数是指定字符偏离路径的宽度,正负数值分别是在内测还是外侧进行偏离
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 渲染ASCII字符
- AGG第三十二课 renderer_outline_aa更快的渲染线段算法
- AGG第三十四课 stroke_aa和outline_aa渲染线段效率对比
- AGG学习之九----自带gsv_text对象raster方式绘制字符
- SQL text类型字段字符替换
- iOS textfield限制长度,中文占2字符,英文占1字符
- Android EditText输入限制最大字符长度 和 限制只能输入数字和字母(包含大小写)
- Android 之 设置EditText最大可输入字符
- Flex TextInput只允许输入数字等字符及字符数限制
- Flex中实现对一个text渲染不同的字体颜色
- 用I/O流建立一个text.txt并写入字符。
- Android TextView 部分字符高亮
- Android EditText实现字符过滤
- SQLSERVER 筛选出数据包含特殊字符( 制表符、回车符、换行符)的字符型和text类型字段
- 在数据库中通过text文本存储中文字符出现如图下所示错误
- Textview文字监控(输入到某个字符后,进行操作)
- 支持Html渲染的TextView—LinkTextView
- TextView设置ellipsize maxEms和singleLine 限制字符个数失效问题
- 代码实现EditText的限制性输入字符内容和多少
- editText限制输入字符长度,禁止输入表情,清除输入文字的按钮