千家信息网

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

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,1 构造函数参数说明定义文件:include/agg_arc.h类函数构造器:arc(double x, double y, double rx, double ry, double a1,doubl
千家信息网最后更新 2025年12月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_storagearc_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安全错误 数据库的锁怎样保障安全 outlook邮箱不需连上服务器登录 网络安全绘画的内容是 软件开发项目经理培训内容 qq网络安全中心怎么关 网络服务器配置与管理第三版答案 期权交易类软件开发 石台专业软件开发服务代理品牌 苏州软件开发外包公司 国家宣传网络安全产业 气象软件开发的创业计划书 小型企业网络安全设计 郑州云网互联网络科技有限公司 idea数据库连接放在哪里 民警利用网络安全周开展宣传 数据库表权限有哪些 江苏直销服务器高质量的选择 网络安全保障工作会议精神 虹口区网络安全工控机价格 天津塘沽区哪里有软件开发培训 配料数据库 最新免费代理服务器地址 安徽一声互联网科技有限公司 网络安全产品岗 我国每年几月份开展网络安全 宝塔服务器管理密码 杭州手机软件开发平台 诺西软件开发项目案例 直播网络安全工作的主要内容 易度软件开发有限公司官网 创建数据库编码为utf8
0