cairo是一个轻量级的渲染2D引擎,可以根据具体的点阵坐标输出成不同格式的结果文件,比如常见的图片格式,或者pdf格式。cairo还支持多种编程语言的接入和多种第三方插件的调用,是一个非常容易上手、容易使用的渲染引擎。
在cairo官方地址,有一个很简单的上手介绍,给出一个简单的绘制图形讲解,快速的了解如何绘制简单的文字、线条和文本。在这里就不再废话,如果英文不好,csdn上也有中文翻译。英文官方介绍请点击。
这里也贴出俩个比较适合初期上手的地址,绘制过程和代码讲解都是非常清晰的。
第一个是介绍使用cairo绘制各种图形的代码和代码讲解:
http://zetcode.com/gfx/cairo/shapesfills/
下面这个是介绍了cairo结合GTK一起绘制线的介绍,包括虚实线、line_join和linecap:
http://zetcode.com/gfx/cairo/basicdrawing/
这里主要是介绍使用cairo绘制一个面图形。根据上面链接中的一个例子进行介绍。项目需求是绘制一个面,面的边线和面的填充需要使用不同的宽度和颜色。这里几个核心方法是
int draw()
{
cairo_set_line_width(cr, 9);
cairo_set_source_rgb(cr, 0.69, 0.19, 0);
cairo_translate(cr, width/2, height/2);
cairo_arc(cr, 0, 0, 50, 0, 2 * M_PI);
cairo_stroke_preserve(cr);
cairo_set_source_rgb(cr, 0.3, 0.4, 0.6);
cairo_fill(cr);
}
上述代码会绘制一个填充和边线不一样颜色的圆。其中的关键就是cairo_stroke_preserve。该方法会对当前绘制的画笔设置,包括宽度、色值进行绘制,而且当前的路径信息会保留在绘制的上下文中。因此接下来在执行cairo_fill的时候还是在当前路径的上下文中。该方法和cairo_stroke不同的是,cairo_stroke绘制结束,当前绘制的路径信息就在绘制上下文中被清空。