cario库

编译

用法

名词

path(路径)   stroke(描边)   fill(填充)   mask(蒙板)

接口

# 创建和销毁surface
cairo_image_surface_create                   // 内部内存创建图片surface
cairo_image_surface_create_for_data  // 外部内存创建图片surface
cairo_surface_destroy                             // 销毁surface

# 创建和销毁cario上下文
cairo_createcairo_destroy

# 设置绘制参数
cairo_set_operator         // 设置混合模式,默认CAIRO_OPERATOR_OVER
cairo_set_antialias          // 设置绘制抗锯齿效果,CAIRO_ANTIALIAS_BEST
cairo_set_source_rgb    // 设置绘制颜色(0.0到1.0范围)
cairo_set_source_rgba  // 设置绘制颜色,包含不透明度

# 设置绘制线条参数
cairo_set_line_cap         // 设置绘制线条两端处理,xxx_CAP_ROUND表示圆滑
cairo_set_line_join         // 设置绘制线条衔接处理,xxx_JOIN_ROUND表示圆滑
cairo_set_dash               // 设置绘制线条虚线模型

# 绘制函数
cairo_move_to               // 设置绘制线条起点(或贝塞尔曲线的起点)
cairo_rel_move_to        // 功能同上,采用的相对坐标,相对上一个参考点
cairo_line_to                  // 设置绘制直线终点
cairo_curve_to              // 设置绘制三次贝塞尔曲线(前两个参数是控制点最后是终点)
cairo_rectangle             // 构建矩形路径
cairo_arc​​​​​​​​​​​​​​​​​​​​​                        // 构建圆弧路径

# 渲染函数
cairo_stroke_preserve // 渲染cario上下文中的路径,没有清理path
cairo_stroke                  // 渲染cario上下文中的路径,同时清理path
cairo_fill                         // 填充path(非闭合path适用,前提path存在)
cairo_paint​​​​​​                    // source里的pattern或其他渲染出来
cairo_mask                    // source和mask混合渲染出来

# 工具函数
cairo_format_stride_for_width   // 获取图像格式的stride
cairo_stroke_extents                   // 获取路径最佳闭合矩形
cairo_in_stroke                             // 判断点是否在路径内部

# 输出相关
cairo_surface_write_to_png       // 将surface输出为png图片

原理

多点构造路径path,路径描边stroke,路径填充fill;(绘制和渲染分离)

实例

// 直接原图上操作
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
// dash
double dashed[] = {1.0, 2.0, 4.0, 8.0};
int len  = sizeof(dashed) / sizeof(dashed[0]);
cairo_set_dash(cr, dashed, len, 0);
cairo_set_dash(cr, NULL, 0, 0);
// 产生临时surface
#define M_PI 3.1415926
cairo_push_group(cr);
cairo_set_source_rgba (cr, 0.8, 0.8, 0.8, 0.6);
cairo_arc(cr, 100, 300, 80, 0.1 * M_PI, 1 * M_PI);
cairo_fill(cr);
cairo_pattern_t* pattern = cairo_pop_group(cr);
或cairo_pop_group_to_source(cr);
cairo_set_source(cr, pattern);
cairo_paint (cr);

参考

文档:https://www.cairographics.org/manual/index.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值