cairo填充_cairo graphics 手册(2)

本文介绍了Cairo图形库中的关键概念,包括Context、Path、Source、Surface和Mask。Context是图形状态的载体,用于描述绘图方式;Path由线段构成,分为开放和闭合路径;Source代表画笔,如颜色、渐变和图案;Surface是绘制的目标,如PDF、PNG等;Mask则作为过滤器,控制图源应用到图面的区域。
摘要由CSDN通过智能技术生成

Cairo 定义

本章我们将介绍Cairo 图形库中一些比较有用的定义。这将帮助我们更好的理解Cairo绘图模型。

Context

要用Cairo画图,首先得创建一个Cairo 上下文(context)。Cairo 上下文(context)中定义了所有的图形状态变量,它们描述了绘图是怎样完成的。其中包括信息如:线宽(line width),颜色(color)以及要绘制的图面(surface)和其他很多相关的信息。

函数gdk_cairo_create()可以为绘图区创建一个Cairo上下文(context)。

cairo_t *cr;

cr = gdk_cairo_create(widget->window);

这两行代码创建了一个Cairo 上下文(context)。在这个例子中,Cairo上下文(context)绑定到GdkDrawable。cairo_t结构包括了渲染设备的当前状态以及还未画出图形的坐标。从技术上说,cairo_t对象被称为cairo 上下文(context)。

所有与Cario有关的绘图都是由Cario_t对象来完成。Cairo上下文(context)可以被绑定到一个特别的图面(surface)上,如pdf,svg,png,GdkDrawable等等。

GDK没有包装Cairo API。它允许Cairo上下文(context)可以被用来在GDK 绘图区(drawables)上绘图。附加的函数被用来将GDK的矩形和区域转换成Cairo 路径(path),并用pixbufs作为资源进行绘图操作。

Path

路径(Path)由一条或者多条线组成。这些线由两个或者多个锚点(anchor point)连接而成。路径可以由直线和曲线组成。开放路径(Open path)和闭合路径(Closed path)是两种不同的路径(Path)。在开放路径中,起点和终点不相遇。在闭合路径中,起点和终点相遇。

在Cairo中,我们首先定义一个路径(Path),接着通过填充(filling)和描边(storking)使其可见。当调用cairo_stroke()或者cairo_fill()函数的时候,如果路径(Path)是空的,必须重新定义一个新的路径(Path)。

路径(Path)可以由子路径(Subpaths)组成。

Source

图源(Source)是我们绘图过程中的画笔。我们可以将图源(Source)比作画笔或者油墨,这样就可以绘制轮廓和填充图形。有四种基本的图源(Sourse)包括颜色(Colors),渐变(gradients),模板(patterns)和图像(images)。

Surface

图面(Surface)是绘图的最终目标。我们可以用PDF或者PostScript图面(surface)来渲染文档。

文档中提及了以下几种图面(Surfaces)

typedef enum _cairo_surface_type {

CAIRO_SURFACE_TYPE_IMAGE,

CAIRO_SURFACE_TYPE_PDF,

CAIRO_SURFACE_TYPE_PS,

CAIRO_SURFACE_TYPE_XLIB,

CAIRO_SURFACE_TYPE_XCB,

CAIRO_SURFACE_TYPE_GLITZ,

CAIRO_SURFACE_TYPE_QUARTZ,

CAIRO_SURFACE_TYPE_WIN32,

CAIRO_SURFACE_TYPE_BEOS,

CAIRO_SURFACE_TYPE_DIRECTFB,

CAIRO_SURFACE_TYPE_SVG,

CAIRO_SURFACE_TYPE_OS2

} cairo_surface_type_t;

Mask

在图源(Source)应用到图面(surface)之前,要进行一次过滤。遮罩(Mask)作为一个过滤器,决定一个图源(Source)哪部分被应用到图面(Surface),哪部分没有。遮罩(Mask)不透明的部分允许将图源(Source)拷贝到图面(surface),透明的部分不允许复制图源(Source)到图面(Surface)。

Pattern

Cairo pattern(模板)代表要绘画到图面(surface)上的source(图源)。在cairo中,你可以读取一个pattern,可以将它作为绘画操作的图源或者遮罩来使用。pattern可以是纯色,一个图面,甚至是渐变。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值