AGG第十课agg::conv_stroke渲染轮廓线-创新互联
1前言
轮廓线就是图形的边界,任何封闭的顶点源跳过agg::conv_stroke阶段,将会描绘实心的图形,填充的颜色和边界保持一致。如果不封闭的顶点源一旦跳过agg::conv_stroke就什么也不绘制。agg::conv_stroke就是用来描绘图形边界的。
创新互联公司主营西夏网站建设的网络公司,主营网站建设方案,重庆APP软件开发,西夏h5微信小程序开发搭建,西夏网站营销推广欢迎西夏等地区企业咨询和agg::conv_contour对比可知,agg::conv_contour是扩展图形的轮廓线,通俗一点就是拓展图形的边界,对图形的边界进行放缩(但是和agg::trans_affine不同,这是中心位置不变的缩放)。
摘自:McSeem
A line is in general more complexobjectthan a polygon. Well, unless it's a simple jagged Bresenham line. All linesareeventually converted into polygons that represent their outlines. So that,inmodern graphics there are no lines,there are *strokes*. And conv_strokedoesthis job
2 官方例子
执行examples/conv_stroke例程,提供如下的控制:
1)线段端点的切换
2)线段之间的连接方式
3)线段宽度
4)miter 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)
3)介绍stroke的默认参数
当然我们可以不调用line_cap,也可以不调用width,因为stroke有默认的构造器,指定了默认的参数如下:
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)
4)agg::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_stroke和conv_dash对象中添加了缩短路径的方法。对于渲染带粗线的箭头非常有效。同时也有一个agg_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);
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:AGG第十课agg::conv_stroke渲染轮廓线-创新互联
分享地址:http://myzitong.com/article/ppjgg.html