//sudo apt-get install libcairo2-dev
//pkg-config --cflags --libs cairo
//-I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  -lcairo #include <iostream>
#include <cairo-svg.h> #define ANGLE(ang)  (ang * 3.1415926 / 180.0)   int main(int argc, char **argv) {
    cairo_t *cr;
    cairo_surface_t *surface;
    int cheight = 400, cwidth = cheight;
    surface = (cairo_surface_t *)cairo_svg_surface_create("Cairo_example.svg", cheight, cwidth);
    cr = cairo_create(surface);    
    
    cairo_pattern_t *pattern;
    cairo_text_extents_t text;
    
    int x,y;
    //填充背景黑色
    cairo_set_source_rgb (cr, 0, 0, 0);
    cairo_rectangle(cr, 0, 0, cwidth, cheight);
    cairo_fill(cr);
//     cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
//     pattern = cairo_pattern_create_radial(50, 50, 5, 50, 50, 50);
//     cairo_pattern_add_color_stop_rgb(pattern, 0, 0.75, 0.15, 0.99);
//     cairo_pattern_add_color_stop_rgb(pattern, 0.9, 1, 1, 1);
//     cairo_set_source(cr, pattern);
//     cairo_fill(cr);
    
    /* Writing in the foreground */
    cairo_set_font_size (cr, 15);
    cairo_select_font_face (cr, "Georgia", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
    
    cairo_set_source_rgb (cr, 0, 0, 1);
    cairo_move_to(cr, 10, 25);
    cairo_show_text(cr, "你好");
    cairo_move_to(cr, 10, 75);
    cairo_show_text(cr, "Wikipedia!");    
    
    cairo_set_source_rgb ( cr, 0, 1, 0 );
    cairo_set_antialias(cr, CAIRO_ANTIALIAS_GOOD);
    cairo_set_line_width(cr, 2);
    cairo_move_to(cr, 30, 10);
    cairo_line_to(cr, 100, 80);
    cairo_stroke(cr);
    
    cairo_move_to(cr, 30, 10);
    cairo_line_to(cr, 230, 80);
    cairo_stroke(cr);
    
    cairo_rectangle_int_t rect;
    rect.x = 200;
    rect.y = 200;
    rect.width = 180;
    rect.height = 160;
    cairo_rectangle(cr, rect.x, rect.y, rect.width, rect.height);
    cairo_stroke(cr);
    //cairo_fill(cr);
    
    cairo_set_source_rgba(cr, 1, 0, 1, 0.5);  
    cairo_set_line_width(cr, 15);
    int cx = 250, cy = 250, R = 130;
    cairo_arc(cr, cx, cy, R, ANGLE(0), ANGLE(360));  
    cairo_stroke(cr);
    
    cairo_surface_write_to_png ( surface, "demo1.png" ) ;
    
    cairo_destroy (cr);
    cairo_surface_destroy (surface);
    
    return 0;
}

Ubuntu下的编译:

g++ `pkg-config --cflags cairo` test_cairo.cpp `pkg-config --libs cairo`



注意:上面的符号`,不是单引號,而是键盘上ESC键的以下, !/1键的左边的按键.

执行结果:

C++基于矢量图形库cairo画图图形的更多相关文章

  1. C++矢量图形库系列(1)——矢量图形库乱谈(转)

    转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...

  2. C++矢量图形库系列(转)

    转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...

  3. 开源图形库 c语言-图形图像库 集合[转]

    开源图形库 c语言-图形图像库 集合[转] Google三维API O3D O3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准. ...

  4. 强大的矢量图形库:Raphael JS 中文帮助文档及教程

    Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出 ...

  5. jmGraph:一个基于html5的简单画图组件

    jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:i ...

  6. Raphael:JS矢量图形库

    Raphael:JS矢量图形库 2016-08-29 http://dmitrybaranovskiy.github.io/raphael/

  7. 贪吃蛇—C—基于easyx图形库(上):基本控制函数实现 画图程序

    自从学了c语言,就一直想做个游戏,今天将之付之行动,第一次写的特别烂,各种bug:就不贴了.今天网上看了好几个贪吃蛇,重新写了一次,做出来的效果还可以. p.s.  easyx图形库是为了方便图形学教 ...

  8. 贪吃蛇—C—基于easyx图形库(下):从画图程序到贪吃蛇【自带穿墙术】

    上节我们用方向控制函数写了个小画图程序,它虽然简单好玩,但我们不应该止步于此.革命尚未成功,同志还需努力. 开始撸代码之前,我们先理清一下思路.和前面画图程序不同,贪吃蛇可以有很多节,可以用一个足够大 ...

  9. 基于SVG的web页面图形绘制API介绍

    转自:http://blog.csdn.net/jia20003/article/details/9185449 一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标 ...

随机推荐

  1. ISheet ICell

    /// <summary> /// Gets the first row on the sheet /// </summary> /// <value>the nu ...

  2. doT.js灵活运用之嵌入使用

    基础的base_info_area <div id="base_info_area"></div> <script type="text/h ...

  3. jquery tmpl插件

    动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等. 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在 ...

  4. Microsoft office2016(专业增强版) 安装错误,报CRT(KB2999226)

    对着这个错误的出现,网上有解释,这里不多说(实际是我没有找到比较靠谱的说法..),跟Window Update这个服务有关. 首先打开”Windows人为管理器”->"服务" ...

  5. 教你破解隔壁妹子wifi密码,成功率高达90%

    破解wifi密码听起来很复杂,实际上也不是非常的复杂,今天教大家如何破解隔壁妹子的wifi密码. 首先声明:本教程只用于技术交流,请勿用于非法用途.请严格遵循相关法律法规.为了保护本例中被破解密码者信 ...

  6. Android基于XMPP Smack及Openfire学习笔记(1)

    之前开发的项目中实用到IM聊天功能.可是这块功能公司有专门的IM团队来开发,由他们开发好后.直接接入到我们APP中.我參与写IM相关功能非常地少,所以也一直想学习相关知识 . 眼下Android主要用 ...

  7. hdu1533Going Home KM算法

    //给一个n*m的图, //m表示人,h表示房子 //问全部人走回家的最小步数 //每一个人仅仅能进一间房 //非常明显的最大带权匹配 //每一个人到每每间房的距离即为权值 //因为是求最小,仅仅要改 ...

  8. LightOJ 1070 Algebraic Problem (推导+矩阵高速幂)

    题目链接:problem=1070">LightOJ 1070 Algebraic Problem 题意:已知a+b和ab的值求a^n+b^n.结果模2^64. 思路: 1.找递推式 ...

  9. scrollwidth ,clientwidth ,offsetwidth 三者的区别

    clientwidth:内容可视区域的宽度 offsetwidth:元素整体宽度 scrollwidth:实际内容的宽度

  10. linux系统下的/proc目录介绍

    1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...