您的位置:首页 > 大数据 > 人工智能

cairo简单学习

2014-01-07 20:24 1136 查看
今天看gtk的demo,然后看到了调用cairo的一些东西,查了下才知道cairo是一个图形库,自己真是无知。

然后简单的学习了一下cairo的用法,以下做总结。

Cairo支持很多不同后端的输出,在实现中被称作“surface”。支持的后端包括
X Window 系统,Win32
GDI,Mac OS X
Quartz,OS/2OpenGL 环境(直接或间接地通过glitz),内存缓冲区,PNG
文件,PDFPostScriptDirectFB

SVG 文件。

还有一些开发中的后端如:OpenVGQtSkia
和 Windows
Direct2D。            -wiki

知名应用

GTK+, 从2005年的 2.8版开始, 使用 cairo 去渲染它的大多数控件从 GTK+ 3 开始, 所有的渲染任务由 cairo 完成。
Mono项目,包括 Moonlight,在很早便设想用 cairo 作为后端驱动GDI+ (libgdiplus) 和 System.Drawing
命名空间。
Mozilla 项目在最近版本的Gecko 排版引擎中使用 cairo,用来渲染 Mozilla 生成的图形输出。
Gecko 1.8,Firefox 2.0 和
SeaMonkey 1.0 的排版引擎,使用 cairo 渲染 SVG 和 <canvas> 内容。
Gecko 1.9,作为
Firefox 3 底层使用 cairo 对网页内容和用户界面进行渲染。

Poppler 库使用 cairo 渲染 PDF 文档. cairo 使得对反锯齿矢量图形和透明对象的绘制成为可能。
矢量绘图应用程序
Inkscape 使用 cairo 图形库显示其概要模式,以及自从0.46正式版使用它输出 PDF 和 PostScript 文档。
FontForge在2008年10月中旬启用 cairo 为默其认渲染图形库。
R 语言经 cairo 用 PDF,PostScript 和 SVG 格式输出图像。
Gnuplot 4.4 现在使用 cairo 来渲染 PDF 和 PNG 输出。

-wiki

cairo *cairo_create(cairo_surface_t *target);
//target like a canvas

//demo use cairo to create sector
//cr was like a pen
double xc,yc;
xc = 128.0;
yc = 128.0;
double radius =100.0;
double angle1 = 45.0 * (M_PI/180);
double angle2 = 180.0 * (M_PI/180);
cairo_set_line_width(cr,10.0);
cairo_arc (cr , xc, yc, radius, angle1, angle2);
cairo_stroke(cr);

//draw subline
cairo_set_source_rgba(cr,1,0.2,0.2,0.6);
cairo_set_line_width(cr, 6.0);

cairo_arc(cr, xc, yc,10.0,0,2*M_PI);
cairo_fill(cr);

cairo_arc(cr, xc, yc, radius, angle1, angle1);
cairo_line_to(cr, xc, yc);
cairo_arc(cr, xc, yc, radius, angle2, angle2);
cairo_line_to(cr, xc, yc);
cairo_stroke(cr);

//create surface and cairo_t
cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 80);
cairo_t *cr = cairo_create (surface);



来自cairo网站,需要两条辅助线

$gcc -o cairo cairo.c -I /usr/include/cairo/ -L /usr/lib -lm `pkg-config cairo --cflags --libs`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: