cairo 教程二

来源:互联网 发布:excel引用其他表格数据 编辑:程序博客网 时间:2024/05/25 18:10

Cairo后端

Cairo支持多种后端,本文基于几个示例讲述如何使用Cairo各种后端创建PNG图像、PDF文件与SVG文件以及如何使用CairoGTK窗口中绘图。

1.PNG图像

第一个示例(main.c)用于生成PNG图像。

#include<cairo.h>

int
main
(intargc,char*argv[])
{
cairo_surface_t *surface;
cairo_t *cr;

surface =
cairo_image_surface_create
(CAIRO_FORMAT_ARGB32,320,48);
cr = cairo_create
(surface);

cairo_set_source_rgb
(cr,0.627,0,0);
cairo_select_font_face
(cr,"AdobeHeiti Std",
CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_NORMAL
);
cairo_set_font_size
(cr,24.0);

cairo_move_to
(cr,10.0,34.0);
cairo_show_text
(cr,"Iam a Chinese,I love china.");

cairo_surface_write_to_png
(surface,"image.png");

cairo_destroy
(cr);
cairo_surface_destroy
(surface);

return0;
}

这个示例是一个很小的控制台程序,运行后可生成一份PNG图像文件。

#include<cairo.h>

上述头文件声明了上面示例中调用的函数以及一些常量的定义。

cairo_surface_t*surface;
cairo_t *cr;

这两行代码声明了一个Cairo外观与一个Cairo环境。

surface= cairo_image_surface_create(CAIRO_FORMAT_ARGB32,320,48);
cr = cairo_create
(surface);

现在我们生成了Cairo外观与Cairo环境,所生成的外观是一份320x48px的图像。

cairo_set_source_rgb(cr,0.627,0,0);

设置源的颜色为darkred,就好比是选择了暗红色的颜料。

cairo_select_font_face(cr,"AdobeHeiti Std", CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_NORMAL
);
cairo_set_font_size
(cr,24.0);

选择字体类型并设置其尺寸。(注:可使用"fc-list"命令查看系统所安装字体)

cairo_move_to(cr,10.0,34.0);
cairo_show_text
(cr,"
Iam a Chinese,I love china");

将“画笔”移动到图像区域的(10.0,34.0)位置开始绘制文本。

cairo_surface_write_to_png(surface,"image.png");

这个函数创建PNG图像。

cairo_destroy(cr);
cairo_surface_destroy
(surface);

最后,回收所有Cairo环境与外观所占用的内存资源。

编译这个示例:

$gcc -o main`pkg-config --cflags --libs gtk+-2.0` main.c

编写对应的Makefile文件进行编译

.PHONY: clean all
all: main

main:main.c
    gcc $^ -Wall -g -o $@  `pkg-config --cflags --libs gtk+-2.0`  

clean:
    rm -f main

生成的PNG图像如下图所示: