cairo(2D图形库)

Cairo是一个跨平台的2D图形库,支持多种输出设备如X-Windows、Win32和PDF。本文介绍了在Ubuntu上使用Cairo进行开发,包括基本概念如表面、源、遮盖、路径、上下文和函数,并提供了绘制矩形到PNG图片及在PDF上写入文本的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

cairo是一款开源的2d矢量图形库,它支持包括X-Windos,Win32,图像,pdf在内的各种输出设备。支持多种后端输出,cairo是用C编写的,但是为大多数常用的语言提供了绑定,qt和Python也支持。本文主要是在Ubuntu里面进行开发,未使用qt工具。

下载安装

sudo apt-get install libcairo2-dev

cairo的基本模型和概念

1、表面(surface)
Surface是Cair绘图的目标区域,在Cairo中使用cairo_surface_t表示,我们绘图的目标区域可以是一张png的图像,一个pdf文件不同目标的绘制,底层实现也各不相同,而surfac对这些绘图的目标进行了一个抽象,所以我们在创建了相应的surface之后,只需要调用统一的函数对surface进行绘制即可。
2、源(source)
指的是我们绘图具体的材料和格式,包括画笔的粗细、颜色等等。source不光可以是笔的颜色,也可以是一种图案(patter)比如渐变色,甚至可以是一个表面(surface)。
3、遮盖(mask)
Mask相当于我们在绘图过程中,用一张挖空了某些部分的纸遮挡在画布上,这样,在绘图过程中,只有挖空的部分会被我们所使用的源影响到,其余部分不受影响。
4、路径(path)
path是指cairo的绘制表面上一些虚拟的路径,可能是一条线段、一个闭合的四边形、或者是更加复杂的曲线,path可以由cairo的函数所创建(verb),但是由于path只是虚拟的路径,所以对path的创建并不代表对表面绘制,我们需要使用绘制函数进行绘制,比如我们可以通过cairo_rectangle函数创建一个闭合的长方形路径,然后通过cairo函数进行填充。
5、上下文(context)
context是cairo的核心结构,在cairo中使用cairo_t来表示,它记录了当前状态下,与绘制有关的各种信息,包括之前介绍的表面、源、遮盖、字体等,在任何绘制之前,我们都必须先创建一个cair_t结构,同时将它绑定到绘制表面上,下面代码创建了一个cairo_t,并绑定到一个640x480的png图像

cairo_surface_t *surface;  
cairo_t *cr;  
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 640, 480);  
cr = cairo_create (surface);  

5、函数(verb)
cairo中与绘制相关的函数被称为verb,目前cairo支持五种绘制函数:画线(stroke)、填充(fill)、text(文字)、滤镜(paint)、遮盖(mask),其中paint相当于是整

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值