编译
用法
名词
path(路径) stroke(描边) fill(填充) mask(蒙板)
接口
# 创建和销毁surface
cairo_image_surface_create // 内部内存创建图片surface
cairo_image_surface_create_for_data // 外部内存创建图片surface
cairo_surface_destroy // 销毁surface
# 创建和销毁cario上下文
cairo_create和cairo_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);