千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1 构造函数参数说明定义文件:include/agg_arc.h类函数构造器:arc(double x, double y, double rx, double ry, double a1,doubl
千家信息网最后更新 2026年11月01日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();


角度 圆心 例子 函数 时针 代码 图形 点源 长短 闭合 弧线 参数 弧度 而是 测试 扇形 平常 优劣 劣弧 半圆 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 广州为想互联网科技有限公司 深圳恒合互联网络科技有限公司 奇酷互联网科技公司 南京欣网互联网科技 融势互联网科技 互联网科技logo设计 互联网科技logo 互联网科技视频素材 一五八零互联网科技 美国互联网前沿科技 宁波青枫互联网科技有限公司 阿里互联网科技公司 保险科技服务互联网营销体系 互联网科技公司营业执照怎么办理 互联网公司高科技产品 城市宝互联网科技有限公司 互联网相关科技技术 互联网金融运营模式中的金融科技 高科技和互联网的现代国家 互联网 科技公司 互联网金融与金融科技 互联网科技革命 互联网科技公司做什么 甘肃拓世互联网科技有限公司 湖南一路畅行互联网科技 互联网科技公司营业执照怎么办理 工业互联网山东科技大学 版纳互联网科技选哪家 北京互联网科技类企业分布
0