网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

AGG第十三课agg::arc渲染弧线和扇形

1 构造函数参数说明

定义文件:include/agg_arc.h

创新互联建站专业为企业提供洪江管理区网站建设、洪江管理区做网站、洪江管理区网站设计、洪江管理区网站制作等企业网站建设、网页设计与制作、洪江管理区企业网站模板建站服务,十年洪江管理区做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

类函数构造器:

arc(double x,  double y, double rx, double ry, double a1,double a2, bool ccw=true)

    圆心为(x, y)和长短半轴分别为rx, ry,初始角度和终结角度为a1, a2

范围是0

注意:不是平常使用的角度180,360,而是弧度,否则出错

2 例子

2.1 绘制弧线

绘制一个圆心(400,100),长短半轴都是100的圆弧,初始角度是0,终结角度是3.14,折算成角度是180度。可以使用agg::deg2rad(90)将角度转换成弧度。

代码如下:

    agg::arc arc(400, 100, 100, 100, 0, 3.14,false);

    agg::conv_strokestroke(arc);

ras.add_path(stroke); agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));

分析:可以调整最后一个参数,修改成true,查看效果!!

2.2 绘制扇形

1)代码如下:

    agg::arc arc(400, 100, 100, 100, 0, 3.14/3,true);

    agg::path_storage path;

    path.move_to(400,100);

    path.concat_path(arc);

    path.line_to(400,100);//连接回到圆心

    path.end_poly();//重新闭合

    ras.add_path(path);

   agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));

2)代码如下:

我们可以不使用end_poly函数进行闭合,而是获取弧线的开始顶点,然后闭合。

   agg::arc arc(400, 100, 100, 100, 0, 3.14/3,true);

   agg::path_storage path;

   path.move_to(400,100);

   path.concat_path(arc);//连接顶点源

   path.line_to(400,100);//连接回到圆心

   arc.rewind(0);

   double x;

   double y;

   arc.vertex(&x,&y);

   path.line_to(x,y);//从圆心连接到开始顶点源

   ras.add_path(path);

agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));

从这个例子,我们可以了解两点:

1如何获取其他顶点源的起点,当然结束点可以通过遍历获得

2 如何与agg::path_storage配合使用,快速的绘制图形。

3 agg::path_storage的arc_to疑惑

agg::path_storage类提供如下的函数

arc_to(double rx, double ry, double angle,bool large_arc_flag, bool sweep_flag, double x, double y)

    添加一条弧路径,画轴长为rx, ry,角度为angle,优/劣弧,顺逆时针,终点在(x,y)。

但是不了解长短半轴,不知道角度,优劣弧,顺逆时针等等,都了解,但是就是画不了!!

测试例子1:

    //完全没有绘制图形

    agg::path_storage ps;  

    ps.arc_to(10,10,agg::deg2rad(90),true,false,160,100);

    agg::conv_strokestroke(ps);

    ras.add_path(stroke);

    agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));

测试例子2:

    //绘制的图形太难理解,move_to到开始绘制点,然后顺时针绘制半圆

    agg::path_storage ps; 

    ps.move_to(320,160);

    ps.arc_to(80,10,6.28,true,true,160,160);

    agg::conv_stroke  stroke(ps);

    ras.add_path(stroke);

    agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));

    ras.reset();


当前题目:AGG第十三课agg::arc渲染弧线和扇形
网站URL:http://bjjierui.cn/article/gjsged.html

其他资讯