C++基于矢量图形库cairo画图图形
//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画图图形的更多相关文章
- C++矢量图形库系列(1)——矢量图形库乱谈(转)
转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...
- C++矢量图形库系列(转)
转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...
- 开源图形库 c语言-图形图像库 集合[转]
开源图形库 c语言-图形图像库 集合[转] Google三维API O3D O3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准. ...
- 强大的矢量图形库:Raphael JS 中文帮助文档及教程
Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出 ...
- jmGraph:一个基于html5的简单画图组件
jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:i ...
- Raphael:JS矢量图形库
Raphael:JS矢量图形库 2016-08-29 http://dmitrybaranovskiy.github.io/raphael/
- 贪吃蛇—C—基于easyx图形库(上):基本控制函数实现 画图程序
自从学了c语言,就一直想做个游戏,今天将之付之行动,第一次写的特别烂,各种bug:就不贴了.今天网上看了好几个贪吃蛇,重新写了一次,做出来的效果还可以. p.s. easyx图形库是为了方便图形学教 ...
- 贪吃蛇—C—基于easyx图形库(下):从画图程序到贪吃蛇【自带穿墙术】
上节我们用方向控制函数写了个小画图程序,它虽然简单好玩,但我们不应该止步于此.革命尚未成功,同志还需努力. 开始撸代码之前,我们先理清一下思路.和前面画图程序不同,贪吃蛇可以有很多节,可以用一个足够大 ...
- 基于SVG的web页面图形绘制API介绍
转自:http://blog.csdn.net/jia20003/article/details/9185449 一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标 ...
随机推荐
- Docker -- 2 -- 利用docker部署网站和数据库
在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录. 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这 ...
- 基于Java的开源3D游戏引擎jMonkeyEngine
jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就 ...
- Linux下QQ的使用并手动设置QQ文件保存路径
一.背景&&目标 马化腾迟迟不肯做linux版本的QQ和微信,实在抠脚. 没有办法,要在linux上使用QQ,目前我找到最好的办法就是使用wine,然而wine这个杀千刀的又是个坑货, ...
- python第六次作业——随笔
第一就是教的和布置的作业难度不一样.python在课堂上学到的东西太基础.然而作业基本上在教义是不能直接找到公式照搬的(尤其是第五次作业文件处理要用到pandas和numpy),所以做作业只能自己去找 ...
- android+myeclipse+mysql自定义控件下拉框的数据绑定
原创作品,允许转载,转载时请务必声明作者信息和本声明.http://www.cnblogs.com/zhu520/p/8031936.html 本人小白,那个大神看到有问题可指出,谢谢.... 这个是 ...
- hdu5024
思路要开阔些,或者说要转化一下思路,别太死 把每一个点当拐点,爆一边就能够.用记忆化搜索也行.都不会超时 #include<bits/stdc++.h> using namespace s ...
- Levmar:Levenberg-Marquardt非线性最小二乘算法
Levmar:Levenberg-Marquardt非线性最小二乘算法 eryar@163.com Abstract. Levmar is GPL native ANSI C implementati ...
- js---15深拷贝浅拷贝 原型链
//&&得到的结果不是布尔类型,如果前面都是 true就执行最后一个,并返回最后一个表达式的值,前面有一个为false,后面不执行,返回前面表达式的值 var a = 3; var b ...
- Tools-->SQL Server Profiler监视数据库
http://www.cnblogs.com/lorking/p/4062787.html https://docs.microsoft.com/en-us/sql/tools/sql-server- ...
- sublime 3 删除当前行
sublime 3 删除当前行 sublime 默认的是 “ctrl+shift+k” ,然而当你点击时,会出现希腊字母的软键盘,与windows默认快捷键有冲突 不用急 不用慌 这时打开: “Pre ...