- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cairo图形指南讲述
Cairo 图形指南 (1) —— 简介
欢迎阅读 Cairo 绘图指南,这份指南会向你讲述 Cairo 二维矢量绘图库的基本知识以及一些高级问题。指南中的示例采用 C 语言实现,其中大部分使用了 GTK+ 库。
二维矢量图形
计算机图形可分为两类,矢量图形与光栅图形。光栅图形是将图像表示为像素点集。矢量图形则是使用一些几何图元(点、直线、曲线、多边形等)表示图像,这些图元是使用数学公式生成的。
这两类计算机图形表达方式各有所长短。相较于光栅图形,矢量图形存在以下优越性:
图形文件更小
可任意缩放
平移、缩放、填充或旋转等图形变换操作对图形质量无影响
Cairo
Cairo 是用于绘制二维矢量图形的库,采用 C 语言实现,又被许多其它计算机语言所绑定,譬如 Python、PERL、C++、C#、Java。Cairo 是跨平台库,可运行于 Linux、BSD、OSX 等操作系统。
Cairo 支持多种后端 (backend):
X Window 系统
Win32 GDI
Mac OS X Quartz
PNG
PDF
PostScript
SVG
这些后端意味着可使用 Cairo 库在 Windows、Linux/BSD、OSX 等平台的窗口中绘图,也可以用于生成 PNG 图片、PDF/PostScript/SVG 文件。
与 Windows 操作系统的 GDI+ 以及 Mac OS 的 Quartz 2D 库相比,Cairo 是自由软件库。自 GTK+ 2.8 版本开始,Cairo 成为 GTK+ 库的一部分。
示例的编译
本指南中的所有示例均采用 C 语言实现,可使用 gcc 编译它们,编译命令格式如下:
$ gcc -o example `pkg-config --cflags --libs gtk+-2.0` example.c
HYPERLINK /youling87/article/details/6434522 \o Cairo图形指南(2) Cairo图形指南(2)
分类: HYPERLINK /youling87/article/category/824160 cairo 2D矢量图形库 2011-05-20 14:44 68人阅读 HYPERLINK /youling87/article/details/6434522 \l comments#comments 评论(0) HYPERLINK javascript:void(0); \o 收藏 收藏 HYPERLINK /youling87/article/details/6434522 \l report#report \o 举报 举报
Cairo图形指南 (2) 概念
本文讲述 Cairo 图形库中一些有用的定义/概念,理解它们可以帮助你更好的理解 Cairo 绘图模型。
环境 (Context)
使用 Cairo 绘图,必须要首先创建 Cairo 环境 (Context)。Cairo 环境保存着所有的图形状态参数,这些参数描述了图形的构成,譬如线条宽度、颜色、要绘制的外观 (Surface) 以及其它一些信息。Cairo 环境允许真正的绘图函数使用很少的一部分参数,以此提高接口的易用性。调用 gdk_cairo_create () 函数可为所绘制的图形创建一个 Cairo 环境。
cairo_t * cr;cr = gdk_cairo_create ( widget-window) ;
这两行代码创建了一个 Cairo 环境,并且这个 Cairo 环境是关联到 GdkDrawable 对象上的。cairo_t 结构体包含了当前渲染设备的状态,也包含了所绘制图形的坐标。从技术上来讲,cairo_t 就是所谓的 Cairo 环境。
Cairo 所有的绘图函数都要去操作 cairo_t 对象。一个 Cairo 环境可以被关联到一种特定的外观,譬如 pdf、svg、png、GdkDrawable 等。
GDK 没有对 Cairo API 进行封装,它只允许创建一个可基于 GdkDrawable 对象绘制图形的 Cairo 环境。有一些 GDK 函数可以将 GDK 的矩形或填充区域转换为 Cairo Path (路径),然后使用 Cairo 绘图与渲染。
路径 (Path)
一条 Path(路径)通常是由一条或多条首尾相接的直线段构成的,也可以由直线段与曲线段构成。路径可分为 Open(开放)类型与 Closed(闭合)类型,前者的首尾端点不重合,后者的首尾端点重合。
在 Cairo 中,绘图要从一条空路径开始,首先定义一条路径,然后通过绘制/填充操作使之可见。要注意的是,每次调用 cairo_stroke () 或
文档评论(0)