Inkscape-之书-全-
Inkscape 之书(全)
原文:The Book ofTM Inkscape
译者:飞龙
简介
本书有两个主要目标。
首先,这是一本关于 Inkscape 的书,一个强大的开源 SVG 基础矢量图形编辑器。它详细描述了稳定版本 0.47(2009 年夏季发布),涵盖了其所有功能(仅排除了一些明显是实验性或不完整的特性)。
本书的第二个,也许更雄心勃勃的目标是推广矢量图形创建方式,并分享在矢量思维中的乐趣。矢量图形软件在近年来已经变得更为可见和易于访问,一度是专业设计师的专属领域。矢量编辑器还不是像 Photoshop 这样的位图编辑器那样成为计算机的标准配件,但它正在朝这个方向发展——Inkscape 已经是这一“矢量革命”的主要部分。
Inkscape 的吸引力很大程度上在于它是唯一一个完全开源且跨平台的职业级矢量编辑器。然而,它还有更多。在基本层面上简单易用,如果你深入研究,Inkscape 还非常强大;它非常广泛且可无限定制——从可定制的键盘快捷键(附录 D)和命令行语言(附录 C),到强大的可链式路径效果(第十三章),再到任意复杂的矢量过滤器,这些过滤器将矢量图形的边界推向极限(第十七章)。本书从海岸到海岸游历 Inkscape 的海洋,没有遗漏任何一个岛屿。
本书包含哪些内容?
第一章是对 Inkscape 的高级描述,包括其功能及其在矢量图形(以及在一定程度上,计算机图形)世界中的位置。接下来,第二章提供了关于程序入门步骤(安装、打开、创建对象、变换它们、保存)的绝对基础入门指南;如果你曾经完成过哪怕是一个小的 Inkscape 项目,你可以安全地跳过这一章。
书的大部分内容,从第 3 章到第 18 章,旨在按顺序阅读。这些章节详细介绍了 Inkscape 功能的各个方面(对象、变换、样式、路径、文本等),包括详细的解释、插图和实用技巧。
书的下半部分(从 第十九章)包含几个完整的分步教程,展示了 Inkscape 在现实世界中的应用(例如动画、名片和本书的封面插图)。本书以几个附录结束(附录 A),其中包含参考信息,包括完整的键盘和鼠标快捷键列表。
Inkscape 仍在不断进步。这本书也是如此。Inkscape 的新稳定版本大约每年发布一次,我会尽力保持这本书的更新。对于最新更新,请访问 www.nostarch.com/inkscape.htm。
这本书适合谁阅读?
您不需要是一名图形专业人才就能发现这本书很有用。即使您对矢量编辑器一无所知,这本书也应该足够温和,帮助您开始矢量图形的旅程。您将需要掌握一些新概念和术语,但只要您练习所学的内容,这些都应该自然而然地掌握。在阅读时,我建议您打开 Inkscape 并立即尝试书中描述的技术。
另一方面,即使是 Inkscape 或其他矢量图形程序的老用户,在这本书中也能找到足够的内容去消化。我写作时从两个角度出发——一个是 Inkscape 的用户角度,另一个是开发者角度,我希望我在 Inkscape 项目中的贡献经验能让我更清晰地看到程序界面的逻辑和行为,识别其特别强和弱的地方(并提出针对弱点的解决方案)。
第一章. Inkscape 与世界
这可能是你第一次接触矢量图形。或者,你可能之前已经使用过矢量图形,现在正在检查它还能为你做什么。或者,你可能在使用了其他矢量编辑应用程序之后考虑 Inkscape,并想知道它有什么独特之处。无论你的情况如何,你可能发现一些背景信息很有用。什么是 SVG?什么是 Inkscape?它从何而来,又将走向何方?你可以用它做什么?Inkscape 在计算机图形世界中的位置是什么?本章的介绍试图回答这些问题以及其他问题。
1.1 矢量图形是什么以及为什么它很重要
Inkscape 是一个矢量图形编辑器。这意味着什么?
今天存储和计算机处理的大多数图像都是以栅格形式表示的,也称为位图。栅格图像是一种相当原始的表示——只是一个由称为像素的小矩形区域组成的网格。对于每个像素,栅格文件存储的唯一信息是其颜色,以及可能还有其透明度。
例如,如果你有一个黑色圆圈在白色背景上的位图图像(图 1-1
图 1-1. 一个作为位图的圆(左)和矢量图(右)
因此,在没有人类指导的情况下,计算机几乎无法对这类图像做任何事情。它可以把所有白色像素涂成蓝色,但它不能移动或变换圆圈,因为它没有把它看作一个单独的对象。这类任务甚至对人类来说可能都很难,就像使用过 GIMP 或 Photoshop 的人会证实的那样;你将不得不使用复杂且不可靠的工具来“选择”圆圈,而且如果你,例如,圆圈的边缘是抗锯齿的(因此边缘的一些像素在黑白之间有中间值),你几乎无法做到完美(如图 1-1 所示)。
与矢量图形(图 1-1),而 PDF 不支持;另一方面,PDF 支持渐变网格(1.5.4 . . . 和 Inkscape**),这是一个 SVG 目前缺少的功能。这使得任何类型的矢量转换都变得不确定。在最好的情况下,你得到的是目标格式无法直接表示的源对象的近似(例如,对于将 SVG 导出为 PDF,你可能需要用嵌入的位图替换模糊对象)。在最坏的情况下,转换后你将得到一个损坏的图像。
这也是 Inkscape 的矢量格式 SVG 那么重要的原因之一。它是一个公认的国际化标准,具有丰富且定义良好的功能,因此有可能成为矢量图形的通用语言(尽管 Adobe 的 PDF 在这个角色中仍然更为常见)。我们将在本章后面更详细地讨论 SVG。
那么,矢量绘图实际上存储了什么?除了前面提到的嵌入的位图对象外,最常见的矢量对象类型是路径。路径只是一系列命令,例如“绘制一条直线到某个点”和“通过某些点绘制一条平滑曲线”。一个序列中可以有任意数量的此类命令,这意味着路径可以用所需的任何精度近似任何几何图形或现实世界的形状。路径可以有填充(在路径包围的区域上涂色)和描边(沿着路径本身涂色),以及许多其他定义路径外观的属性(图 1-2)。

图 1-2. 路径对象可以表示任何形状。
有几种其他对象类型(如文本对象、克隆和组)以及许多其他对象属性(如字体大小、可见性和模糊)。许多属性可以应用于各种对象,而其他属性则特定于特定对象类型。一幅画只是各种类型对象的集合;这些对象可以在需要时放置,包括相互叠加,甚至可以部分或全部透明,以便下面的内容可以显示出来。彩色插页中的图 1 展示了一个复杂的 Inkscape 绘图示例,它大量使用了不透明度、渐变和模糊来实现逼真效果(如果您想全面查看,可以从 Inkscape 的 examples 目录中加载它)。
1.2 你可以用 Inkscape 做些什么?
很多。
图案、图表、图表。计划和草图。科学插图和数据图表。图标、符号、标志和徽章。纹章、旗帜、路标。漫画、卡通、动漫角色和场景。现实与虚构的土地地图。各种印刷字体。横幅、传单、海报。网络图形。(广告也是如此。)书籍封面、节日贺卡、标题和插图。孩子们的涂鸦和令人惊叹的摄影写实艺术。幻想艺术、粉丝艺术、游戏艺术以及各种风味和品种的艺术。
本书的一个目标是要证明矢量编辑工具适用于比通常所认为的更广泛的任务范围。实际上,与其试图列出 Inkscape 可能被使用的所有目的,不如描述其使用可能不合适的情况。让我们尝试定义 Inkscape 的边界:
-
许多涉及照片或其他现有矢量图形的任务,如色彩校正、修图以及格式或尺寸转换,在 GIMP 或 Photoshop 等位图编辑器中完成会更好。在矢量图像的所有限制中,这一点最为人熟知,因为它区分了两种常见的图形工具:矢量和位图。请注意,一些与位图相关的任务——如添加注释或标记、在位图背景上绘制形状、蒙版(18.4 剪裁和蒙版)或甚至简单的修图(18.5 修图和修补)——在 Inkscape 中仍然可以相当自然地完成。
-
使用 自然媒体工具(那些模仿油画、粉彩、水彩等)绘图最好在专门的矢量工具中进行,如 Krita、Corel Painter 或 ArtRage。更普遍地说,这适用于任何彩色表面的 纹理 至关重要的艺术。尽管如此,如果你更关心形状和颜色而不是纹理,或者如果你的艺术作品仅用纯色、渐变和模糊效果看起来很好,Inkscape 是“简单绘图”的最佳工具之一(第十四章)。
-
制作 文本丰富的多页文档,特别是具有脚注、索引或目录等复杂功能的文档,自然是页面布局软件(如 Scribus 或 Adobe InDesign)或批处理格式化工具(如 TEX 或 Apache FOP)的领域。然而,Inkscape 在处理图形丰富的单页文档(如海报或传单)方面非常出色,你甚至可以通过将每一页存储在单独的文档或图层中来使用它进行一些多页设计(它目前还不支持在一个文档内使用多个页面)。此外,截至本文撰写时,Inkscape 缺乏对 CMYK 的适当支持,这限制了它在印刷工作中的应用。
-
虽然 Inkscape 的 3D 盒子工具(11.3 3D 盒子)可以用于简单的 三维草图和场景,但它采用的是传统艺术家在 2D 绘图中描绘 3D 对象的方法,而不是 3D 艺术家创建 3D 世界的方法。换句话说,如果你只需要绘制一次简单的 3D 场景,可以使用 Inkscape 获得一个看起来不错且几何上正确的结果。然而,如果你需要从不同角度绘制同一复杂场景的多个版本或 3D 动画,请使用一些真正的 3D 软件(例如 Blender、Maya 或 SketchUp,仅举几个例子)。
-
你可以在 Inkscape 中做一些简单的 CAD(计算机辅助设计;这个术语通常适用于工程图纸)工作。Inkscape 提供了绘制和精确变换对象的方法,以及大量的捕捉、对齐和分布功能。然而,Inkscape 不支持参数化建模等特性,也没有任何必要的 CAD 元素库(如螺丝或管子),这对于专业 CAD 工作至关重要。虽然你可以在其他地方尝试借用这些元素,但在大多数情况下,使用 QCad 或 AutoCAD 等专业工具仍然更好。
-
Inkscape 有一个专门的连接器工具,你可以用它来绘制相当复杂的 图表和流程图,并且连接器会自动路由。然而,这个工具目前相当有限,Inkscape 中没有预定义的图表元素集合,你可以轻松地重复使用。因此,如果你需要创建许多标准化的图表,可以考虑使用 Visio 或 Dia 等专业工具。
-
有些人已经成功地将 Inkscape 用于演示文稿。凭借其操作对象的便捷性和众多吸引眼球的特效,Inkscape 在需要快速构建演示文稿时是一个非常吸引人的选择。你可以创建并重复使用带有标题和占位文本的页面模板(3.2 文档模板)。Inkscape 甚至包括一个独立的 SVG 查看器(Inkview),具有全屏模式和“显示下一页”命令的快捷键!,这对于显示保存为单独 SVG 文档的页面通常就足够了。尽管 PowerPoint 或 OpenOffice.org Impress 等办公演示文稿应用程序可能仍然有其优势,但一旦习惯了 Inkscape 的图形能力,这些程序往往会显得相当笨拙。有些人使用 Inkscape 绘制图形,并使用演示文稿应用程序添加文本和创建实际的演示文稿。此外,一个名为 JessyInk 的第三方扩展(
code.google.com/p/jessyink)可以将你的多图层 SVG 文档转换为可以在 Firefox 或其他 SVG 兼容浏览器中查看的多页演示文稿。 -
Inkscape 的扩展效果(13.3 路径扩展)可以渲染许多有趣的图形效果,如 Lindenmeyer 系统、随机树、螺旋曲线或条形码。新的效果也易于编程。然而,如果你需要的是一些复杂的算法艺术(如分形),你可能需要使用专门的软件,并将结果导入 Inkscape。
-
Inkscape 目前还不支持动画。因此,虽然你可以用它来绘制动画场景、角色甚至完整的帧,但你仍然需要一个不同的应用程序(如 Adobe Flash)来组合这些元素并管理动画的时间线。
虽然模糊(并且快速变化),但这些是目前矢量图形领域的边界。这些边界内的一切都是现代矢量编辑器(如 Inkscape)的合法领域。
诚然,这些限制中只有一些是矢量图形本身的固有属性。其他则是 Inkscape 当前的局限性,这些局限性很可能会随着时间的推移而克服。(它们在你阅读本文时可能已经过时了——请查看最新版本。)
奇怪的是,很多人在图形的外围领域游荡,但对矢量核心地带却一无所知。结果,他们经常因为试图用他们喜欢的专业工具来完成错误的通用任务而感到沮丧。常见的例子是,当需要制作任何类型的图片或布局时,Microsoft Office 用户会陷入 PowerPoint 的困境,或者在论坛上抱怨在 GIMP 中绘制简单的几何形状是多么困难。这些都是典型的急性矢量盲症状况;不要成为这种疾病的受害者!
矢量图形领域也是许多项目路线图开始的地方。无论我开始什么项目,最终会使用什么软件,我的第一步通常是打开 Inkscape 并开始制作快速草图。只有当我遇到上述限制中的一些时,我才会转向更专业的应用程序来完成我的项目。而且,我越来越发现,我实际上不需要离开 Inkscape 来完成我开始的任何事情。Inkscape 的宇宙在不断扩大。
1.3 Inkscape 艺术作品的来源
一个工具如果没有用户社区,那就只是一个死工具,而一个用户社区如果没有可以研究和重用的作品集,也是不存在的。如果你总是不得不从一个空白页面开始一个项目,或者没有人可以与你分享你的作品,Inkscape 就不会那么有趣了。
寻找 SVG 艺术作品的主要两个原因是学习和重用。重用很简单;这正是“剪贴画”整个概念的核心所在。你不必从头开始绘制一切,而是使用别人创建的元素,并将它们与你的东西结合起来(当然,前提是那些元素的许可证允许这样做)。
当重用他人的艺术作品时,只要 Inkscape 可以读取它,源格式就不是很重要(附录 B])也可以成为你设计中的矢量图像的来源。PostScript 和 EPS(封装 PostScript)得到一定程度的支持。CDR(CorelDRAW)文件也可以导入,并且未来的版本很可能还会支持 XAR(Xara Xtreme)格式。
此外,没有什么可以阻止你将位图文件导入 Inkscape,并在你的设计中“直接使用”,或者利用 Inkscape 多功能的位图追踪器(18.8.2 跟踪位图对话框)将其转换为矢量形状。
即使你不使用剪贴画,下载你找到的有趣图像的 SVG 源文件也是一个很好的学习理由。与位图不同,矢量图像包含了很多关于其创建方式的信息,在 Inkscape 中你可以详细地检查这些信息。可见区域与对象之间的对应关系,这些对象类型,它们的属性,分组和图层结构——所有这些方面对于学习 Inkscape 或 SVG 技术的人来说都是非常有益的。
与大多数其他矢量工具相比,Inkscape 的文件在网上很容易找到。考虑到它的原生格式 SVG 是可读的,并且自然适合网络(它被大多数最新浏览器直接支持),这并不令人惊讶。此外,作为开源软件,Inkscape 促进了包括其图形在内的分享文化。网络上已经有很多 SVG 内容(在 Google 上搜索 filetype:svg)——比 AI、CDR 或 XAR 文件多得多(但仍然远远落后于 Flash^([2]))。
除了在网络上搜索 SVG 内容外,你还可以尝试以下资源:
-
Open Clip Art Library (
www.openclipart.org) 是一个社区网站,拥有大量 SVG 格式的公共领域剪贴画。Inkscape 甚至可以直接从 OCAL 导入艺术作品,并直接导出到 OCAL。 -
Wikimedia Commons (
commons.wikimedia.org) 包含成千上万种 SVG 图像,其中大多数是在 Inkscape 中创建的。 -
InkscapeForum.com (
inkscapeforum.com) 和inkscape.deviantart.com上的 Inkscape 小组是两个 Inkscape 艺术家分享和讨论他们作品的地方。 -
The Inkscape Wiki (
wiki.inkscape.org/wiki/index.php/Galleries) 包含一系列在线画廊,供个人艺术家使用。
^([1]) 仅支持基于 PDF 的 AI 文件,这意味着使用 Adobe Illustrator 版本 9 或更高版本保存的 AI 文件。
^([2]) 具有讽刺意味的是,如今 Flash 更常用于视频,而不是其原始用途——动画矢量图形。
1.4 SVG 简史
Inkscape 使用 SVG 作为保存矢量文件的格式。什么是 SVG?
SVG(可缩放矢量图形)标准诞生于 1990 年代末 XML 革命的顶峰时期。在当时,简单却无限表达的 XML 的新鲜诱惑下,人们想要为 一切 创建 XML 词汇表。矢量图形自然成为了一个合适的候选人。1998 年,在 W3C 成立了一个新的工作组,W3C 是背后支持最常用网络标准的国际联盟,包括 HTML 和 XML。该小组包括(其他)Adobe、Microsoft 和 Macromedia 的代表。他们劳动的第一个成果,SVG 1.0,于 2001 年出现;最新的官方版本是 1.1,于 2003 年发布。下一个版本,1.2,正在开发中,其中一部分已经完成。
SVG 从矢量格式的漫长且常常复杂的历史中汲取灵感,从一开始就努力做到正确。它继承了来自 PostScript 和 PDF 的许多优点(1.5.1.1 Adobe 的矢量格式),但被设计成不受其限制。SVG 本地支持透明度、渐变、文本的 Unicode 以及 21 世纪中被视为理所当然的许多便利功能。它还添加了独特的滤镜效果(第十七章]) 关于例外情况,请参阅15.2.2 流体文本。
1.5 Inkscape 及其竞争者
当然,Inkscape 远非市场上唯一的选择。曾经存在并且现在仍然存在数十个矢量编辑器:商业的和开源的,适用于不同的平台,通用的和专门的,活跃的和已停产的。然而,其中只有少数值得在这里提及。目前,Inkscape 的所有严肃竞争对手都是商业应用(并且通常成本很高),通常限于 Windows 和 Mac 平台,这意味着 Inkscape 的零成本和跨平台可用性立即给它带来了竞争优势。
1.5.1 Adobe Illustrator
Adobe Illustrator 在这个列表中占据了无可争议的第一位。这是一个功能强大且功能丰富的应用程序,通常被认为是该领域的领导者,并且在矢量图形中是一个事实上的标准。即使你不使用 Illustrator,你也可能遇到其功能和版本的提及,与其他程序的比较,以及当然,各种格式(包括 SVG)中由 AI 创建的矢量文件。
毫无疑问,Illustrator 的大部分影响力来自于其更为著名的表亲,Adobe Photoshop。作为同一创意套件的一部分,Photoshop 和 Illustrator 共享许多 UI 特征,并针对协同工作进行了优化。然而,与 Photoshop 相比,Illustrator 在其领域的地位幸运地远非垄断。即使没有 Inkscape,它仍然面临着非常严肃的竞争,尽管近年来其知名度有所增长。
Illustrator 的历史可以追溯到 20 世纪 80 年代末,它并不是矢量图形领域的始终主导者。许多功能都是在竞争产品中首创的,有时甚至是在几年之后才在 AI 中重新实现。然而,到目前为止,它已经变得如此庞大——并且随着每个版本的发布而不断增长,尤其是如果你考虑 Adobe 的整个创意套件以及整个第三方 AI 插件行业——任何概括都是冒险的。Illustrator 对很多人来说意味着很多。
然而,我认为我可以冒险做出这样的概括:无论其功能如何,很少有人会声称 Illustrator 的 UI 是可用性的典范。批评者(诚然主要是使用竞争产品的用户)指出,界面杂乱无章,充斥着大量的浮动对话框,工具太多且功能过于狭窄,对象属性在画布上的可编辑性有限,以及上下文信息的稀缺。竞争编辑器也经常声称在速度上优于 AI。
AI
我不是试图为 AI 用户编写一份全面的迁移指南。然而,在整个书中,我将提供 Inkscape 一些功能的 AI 等价物和比较。
1.5.1.1 Adobe 的矢量格式
与 Illustrator 以及 Adobe 整体相关的矢量格式在现代数字世界中扮演着至关重要的角色。即使你计划只使用 Inkscape 的 SVG,你也应该了解 PostScript 和 PDF 是什么,它们是如何相关的,以及它们能够做什么。
Adobe 在 1984 年首次成名,是所有矢量图形格式的鼻祖:PostScript。作为发送数据到打印机的标准,它正好赶上了 20 世纪 80 年代的“桌面出版革命”,这场革命由可访问的个人电脑和激光打印机推动。
PostScript 的独特之处在于它是一种完整的 编程语言,而不仅仅是一种数据格式。一个 PostScript 文件实际上是一个打印机或计算机必须运行的程序,以便获取图像。例如,一个 PostScript 文件可能包含打印一行文本的指令,比如“我必须不打扰课堂”,以及一个将重复此行一百次的循环。不幸的是,这也意味着,由于程序中的错误或某人的恶意意图,一个 PostScript 程序可能会无限期地运行,占用系统资源。
从积极的一面来看,PostScript 的解释器使用的内存很少,因此可以嵌入当时的硬件中。因此,它受到了打印机制造商的欢迎,很快成为了发送文件打印的既定标准。
它还被用作 Adobe Illustrator 第一版原生文件格式的基础,大约在同一时间出现。尽管 AI 文件格式随着应用程序的每个版本在许多方面都发生了变化,但它的基础长期保持不变:一个 AI 文件仅仅是遵循某些约定并使用 Adobe 的 PS 函数库的 PostScript。
对于 Illustrator 的用户来说,不幸的是,PostScript 作为一种打印语言的优先级是解决打印机制造商的问题,而不是成为通用的矢量图形语言。例如,PostScript 的第 2 级(1991 年)增加了设备无关的 CMYK 颜色,但直到第 3 级(1997 年)才直接支持渐变这样的基本功能。(直到 PS 3,希望创建 PostScript 渐变的应用程序必须通过叠加许多颜色逐渐变化的窄条来“伪造”渐变。)而且即使今天,PostScript 仍然不支持透明度。
这无疑是早期版本的 Illustrator 慢慢获得用户所需求的新功能(以及竞争对手矢量编辑器已经提供的功能)的原因之一。时至今日,Illustrator 的用户界面仍然带有当初以 PostScript 功能集为设计初衷的痕迹,其他所有功能都被视为次要考虑。
然而,PostScript 最大的问题并不是其功能限制。随着时间的推移,它作为一个编程语言的存在证明是一个更大的负担:曾经是 1980 年代末的一个巧妙技巧,现在被视为非常繁琐且危险。由于任何 PostScript 文件都是一个程序,你只能通过运行该程序来知道这个文件将显示什么。这意味着你需要一个完整的 PostScript 解释器来处理 PostScript 文件,而且你不能直接将两个 PostScript 文件合并成一个具有可预测结果的单一文档。
Adobe 试图通过在 PostScript 文件上施加各种限制来纠正这一点。其中一种限制是封装 PostScript(EPS)格式。EPS 文件实际上是一个可以可靠地插入到其他文档中的一页 PostScript 文档。然而,这显然是不够的。
因此,在 1993 年,Adobe 采取了一个更加激进的步骤:它引入了便携式文档格式(PDF)。这个格式,尽管基于 PostScript,但放弃了作为编程语言的想法。最初,PDF 只是以声明性方式重写的简化 PS,增加了压缩和一些高级文档管理功能。后来,Adobe 继续发展 PDF,远远超出了 PostScript 所能提供的;例如,透明度是在 PDF 1.4 版本(2001 年)中添加的。
虽然 PDF 的官方目标是互联网文档交换,但它变得流行,并最终开始在印刷和设计领域站稳脚跟。PDF 是一个开放格式,由 ISO 标准化,任何人都可以免费实现,这也帮助了它。到目前为止,PDF 在很大程度上已经取代了 PS 在大多数商业应用中的地位,包括印刷。
对于我们的讨论来说更重要的是,在 9.0 版(2000 年)中,Adobe Illustrator 将其原生 AI 文件格式从基于 PostScript 改为基于 PDF。这意味着任何在 Adobe Illustrator 的现代版本中保存的 AI 文件实际上都是 PDF,并且可以被任何支持 PDF 的软件查看和导入。例如,Inkscape 的 AI 导入器实际上与它的 PDF 导入器相同。
总结来说,如果你可以使用 PDF 而不是 PostScript 或 EPS,那么在这个时间点上使用 PostScript 或 EPS 真的没有意义。Inkscape 可以导入 PS 和 EPS,但只能通过先将它们转换为 PDF 来实现,这需要在你的系统上安装免费的跨平台 Ghostscript 包(**B.4 PostScript 和 EPS(导入、导出))。从 Inkscape 导出到 PDF 的结果比导出到 PostScript 更好。
1.5.2 CorelDRAW
目前,Illustrator 最大的竞争对手是 CorelDRAW。像 Illustrator 一样,它是一个大型、功能齐全的应用程序,是图形应用套件的一部分。然而,这里的相似之处到此为止。
CorelDRAW 始终将自己定位为“为我们其他人”设计的矢量编辑器。其价格低于 Illustrator 或 Freehand(在 20 世纪 90 年代初,它是 Illustrator 的主要竞争对手,现在已被 Adobe 收购并停止生产),CorelDRAW 一直强调易用性,并在 20 世纪 90 年代极大地扩大了矢量编辑工具的用户群体。在一些国家和社区中,它曾经并且现在仍然比 Illustrator 更受欢迎。
CorelDRAW 开创了一些有价值的用户界面概念,这些概念被传递给了包括 Inkscape 在内的其他许多应用程序。例如,能够执行所有类型的选择和变换的单个选择工具(移动和缩放,然后点击一次就可以旋转和倾斜)首次出现在 CorelDRAW 中;Illustrator 和 Freehand 有独立的“选择”、“缩放”和“旋转”工具。
它还引入了形状(如矩形或椭圆)作为独立的对象类型,路径编辑工具在形状上的作用与在普通路径上的作用不同。令人难以置信的是,Illustrator 仍然没有形状的概念;Illustrator 中的任何矩形都只是一个矩形路径,没有任何矩形特有的属性。
1.5.3 Xara
CorelDRAW 在易用性方面,过去和现在都是一个令人印象深刻的改进,然而,在这个领域还有更多可以做的事情,正如英国的小公司 Xara Ltd.所证明的那样。在 20 世纪 90 年代中期,Xara 将其矢量编辑器从鲜为人知的 Atari 平台移植到 Windows 上。结果是计算机图形领域中最令人印象深刻的处女作之一。
Xara 的矢量编辑器取得了许多重要的首次。它具有完整的屏幕抗锯齿,方便的控件在画布上编辑渐变,方便的透明度支持,以及一个与当前工具相关的上下文敏感的面板(尽管这个想法很明显,但 Illustrator 直到 CS2 版本才拥有这个功能)。除此之外,Xara 运行速度非常快,这在当时的硬件条件下尤为重要。
总体而言,Xara 遵循了 CorelDRAW 的用户界面范式(如此之多,以至于 Corel 一度将 Xara 以 CorelXARA 的名义分发,作为其 CorelDRAW 的一个小兄弟)。然而,Xara 在易用性方面相对于 CorelDRAW 的优势甚至超过了 CorelDRAW 相对于笨拙的 Illustrator 的优势。Xara 很快获得了一个庞大且非常忠诚的用户群体。Inkscape 从 Xara 那里借鉴了许多想法和方法,这并不奇怪。
然而,随着时间的推移,Xara 的新颖性有所减弱。Xara 发布了几个新版本,但其竞争对手也发布了新版本,发明了新功能并提高了易用性。到 2000 年代中期,大多数人认为 Xara 是一个“小巧的不错应用”——非常坚固和易用,但有些过时。
2005 年,Xara Ltd. 取得了一项前所未有的举措:它宣布计划将其旗舰产品矢量图形编辑器开源,并将其移植到 Linux,该产品的最新版本被称为 Xara Xtreme。Linux 版本将被命名为 Xara LX。这看起来像,但实际上并不是,“开源比废弃软件更好”的场景之一。Xara 仍然在营业,继续销售 Xara Xtreme 的 Windows 版本以及其他图形产品。
有趣的是,Xara Ltd. 提到的其中一个导致其下滑的原因是 Inkscape 的快速进步。尽管 Inkscape 比 Xara 年轻得多,但它已经拥有一些独特的功能。显然,Xara 希望利用开源人才库来重振其产品。另一方面,Inkscape 开发者一直将 Xara,以其一致的界面设计和出色的可用性,视为其榜样之一。因此,尽管这两个应用程序之前已经有所了解,但现在他们第一次作为竞争对手面对面相遇。
事实上,由于它在 Linux 上的存在以及 UI 的一般相似性,Xara 目前是 Inkscape 最直接的竞争对手。最初,这两个项目都宣布自己是开源的,愿意交换代码和想法,甚至有关于最终合并的讨论。然而,在最初的活跃期之后,Xara LX 没有吸引到开源开发者的显著关注,这主要是因为 Xara Ltd. 拒绝将其代码的一个关键部分开源——渲染器。目前处于 0.7 版本,Xara LX 基本可用,但其未来尚不明确。
1.5.4 ... 以及 Inkscape
与其商业竞争对手相比,Inkscape 在几个方面仍然得分较低。在缺失的功能中,可能最重要的是缺乏原生 CMYK 支持,这使得它几乎无法用于创建用于打印的文件(8.2.2 CMYK)。此外,Inkscape 没有渐变网格。这是 AI 和其他应用程序的一个功能,允许将不同的颜色分配给单个对象的不同点,颜色之间有平滑的过渡。渐变网格允许 AI 艺术家用最少的对象创建极其逼真的艺术作品。另一方面,Inkscape 已经拥有一些在该领域几乎独一无二的创新功能,例如克隆拼贴(16.6 Tiling Clones)、3D 盒子工具(11.3 3D Boxes)、路径效果(第十二章)和调整工具的部分(8.7 调整颜色)。
一些功能尚未在 Inkscape 中实现的最明显原因是 SVG 中缺少这些功能。特别是,对于渐变网格来说是这样的(尽管它们正在考虑纳入 SVG 标准的下一个版本)。同样,Inkscape 实现了 SVG 的线性渐变和椭圆渐变(10.1 渐变工具),但缺乏其他渐变类型,如 Xara 支持的圆锥渐变。同样的原因也导致在 Inkscape 中无法创建多页文档。目前 SVG 标准中根本不提供这一功能。
幸运的是,SVG 的限制对 Inkscape 产生影响的唯一领域是基本对象类型的库。另一方面,在处理这些对象的方式以及将它们组合成更高级对象的方式上,Inkscape 完全可以自由创新。
在界面和可用性方面,Inkscape 通常被认为很容易学习和使用。Inkscape 的用户界面与 Xara 相当,事实上非常相似。在某些方面,一个程序比另一个程序更方便,但两者都提供了一个不引人注目、流程化的界面,拥有许多易于访问的功能。
作为一款真正的开源应用程序,Inkscape 主要由极客编写,而极客的兴趣和优先级有时与商业开发者截然不同。首先,极客讨厌简化后的界面,喜欢强大的控制和无限调整。他们尤其欣赏丰富的键盘控制,Inkscape 拥有史无前例的大量键盘快捷键,涵盖了其大多数模式、工具、命令和功能(附录 D)。
与功能和可用性一样重要的是应用程序的稳定性和速度。Inkscape 的发布版本偶尔可能会崩溃或冻结(经常保存!),但通常稳定性不是大多数用户关心的问题。然而,速度却是。Inkscape 的屏幕更新速度远非出色,尽管它随着每个新版本的发布而不断改进,但在处理复杂图形时,它可能成为一个问题。
具有讽刺意味的是,几年前当 Inkscape 在整体上比现在慢得多时,对其速度的投诉却很少;事实上,大多数用户认为它相当快。然而,现在,尽管屏幕更新更快,程序响应更迅速,但关于 Inkscape 慢速和内存消耗的投诉开始真正堆积起来.^([4]) 这种明显悖论的原因很简单:Inkscape 已经成长和成熟到足以承担一些真正复杂的任务,而使用它在复杂艺术品上的艺术家开始越来越频繁地遇到瓶颈。
^([4]) 随着每一次速度优化,通常都会带来一些令人兴奋的新功能,这又增加了性能需求。例如,在版本 0.45 中就是这样。这次发布引入了 可中断显示,这意味着你不需要等待它完成屏幕的重绘才能发出命令。这大大提高了程序的反应速度。然而,同一版本还增加了高斯模糊(17.1 模糊),尤其是在其原始实现中,其渲染速度比 Inkscape 中的任何其他功能都要慢得多。因此,0.45 版本比之前的任何版本都收到了更多关于速度慢的投诉。
1.6 开源应用程序的生命周期
如您从对 Inkscape 竞争的讨论中可以看出,一个严肃的矢量编辑器成为开源应用程序是非常不寻常的。是什么帮助 Inkscape 在其他开源尝试(而且数量相当多)失败的地方取得了成功?让我们简要回顾一下 Inkscape 的过去。
Inkscape 的故事几乎与 SVG 同时开始,只是那个最初的代码块还没有被称为 Inkscape。它被称为 Gill,是由一个人,Raph Levien,在 1999 年初为 W3C 正在讨论的新矢量格式开发的一个简单的查看器和编辑器。这是一个典型的单打独斗项目,并且它遭遇了许多单打独斗项目的命运:其作者很快对其失去了兴趣。
但是,Gill 代码是公开可用的,另一个人接手了开发工作。Lauris Kaplinski 将项目重命名为 Sodipodi,并为它设定了一个更加雄心勃勃的目标:开发一个真正的矢量编辑器,具有通常与这类软件相关的大部分功能和特性,其用户界面主要模仿 CorelDRAW,但也受到了知名开源位图编辑器 GIMP 的影响。
Sodipodi 的最初版本是由 Lauris 独自完成的,并且几乎没有引起注意。然而,到了 2002 年,越来越多的人开始发现 Sodipodi,其他开发者的补丁也开始涌入。但 Lauris 仍然是该应用的唯一维护者;他决定哪些补丁会被采纳,以及何时发布版本。除了他之外,很少有人有权限向项目的代码仓库提交代码。
Lauris 在 Sodipodi 上做了大量工作;时至今日,Inkscape 代码中相当大的一部分仍然属于他的版权。然而,随着时间的推移,他独断专行的项目管理方式变得越来越成为项目的障碍。长时间忽视补丁和关于开发方向的分歧并不健康。
2003 年 10 月,事情达到了高潮。一群不满的开发者在与 Lauris 未能达成协议后,宣布了分支。他们拿走了最新的 Sodipodi 代码库,添加了他们的补丁,并为这个新项目想出了一个酷炫的名字:Inkscape.^([5]) 在一段时间内,Inkscape 和 Sodipodi 是并行开发的,但后者很快进入了休眠状态,无法跟上年轻的竞争对手。
与其前身相比,Inkscape 项目非常开放。没有一个人对如何做事拥有最高的话语权。要获得完整的开发者权利,包括直接提交到代码库的权利,你只需要提交两个成功的补丁。特别是在 Inkscape 的早期,几乎没有讨论发生;如果有人对程序的某个方面表现出浓厚的兴趣,其他人就会假设那个人知道自己在做什么,不会干涉。
随着时间的推移,出现了一些指导原则,现在如果某个贡献与开发者对事物应该如何运作的想法相矛盾,被拒绝的情况并不少见。然而,仍然没有最高权威人物;一切决策都是通过讨论和共识来决定的。这意味着任何足够热情、能够说服他人并且能够高效编码的人仍然有很大机会影响项目的整体方向。
在项目的指导原则中,有一条简单的规则:倾听用户的声音。这听起来很平常,但令人惊讶的是,很少有软件项目,无论是商业的还是开源的,实际上遵循这一原则。在 Inkscape 中,许多开发者本身就是该程序活跃的用户,这真的很有帮助。此外,在 Inkscape 的早期,它必须赢得 Sodipodi 的用户才能生存下来;幸运的是,认真对待用户反馈的传统即使在 Sodipodi 不再是竞争对手之后也一直延续下来(而且 Inkscape 并不缺乏其他竞争对手)。
项目的一条规则是,先打补丁,后讨论。这意味着如果你有一个想法并且能够编写代码,不要试图说服别人实施它;自己动手做,并让其他人可以在程序中实时测试它。如果它很好,你的同事开发者会帮助你使其完美。(如果不好,你只需撤销它即可。)
“先打补丁”规则的一个后果是,开发构建必须始终是可工作的;任何回归问题都应尽早记录并修复。一群热情的用户每天下载最新的代码并进行测试,甚至在官方发布还遥遥无期的时候。开发者鼓励这种持续的测试,并通过每天为所有主要平台提供新的编译二进制文件来促进这一过程。
结果是项目快速而稳定地增长,现在它被广泛认可为最重要的开源项目之一,并在其软件领域内是一个强大的竞争对手。就数字而言,截至本文撰写时,Inkscape 拥有:
-
几乎 50 万行代码
-
超过 100 名开发者(尽管在任何给定时间,活跃的核心成员大约有 10 人)
-
仅从官方网站下载就超过 300 万次
-
翻译成超过 50 种语言的用户界面
^([5]) 如果你在想如何能够将某人的版权代码拿过来开始修改和重命名,请阅读随 Inkscape 副本一起提供的通用公共许可证副本(文件 COPYING)。
第二章. Inkscape 入门
这本入门章节是为那些没有 Inkscape 经验,以及几乎没有其他矢量编辑器经验的人准备的。这是你在新世界中的第一步。如果你已经使用过 Inkscape,并且认为你可以轻松地自己重现本章的最终示例(图 2-24),那么请随意跳过这一章。
2.1 安装 Inkscape
在安装 Inkscape 之前,你需要问自己的第一个问题是,你是否想要一个 稳定版本 还是 开发版本。稳定版本已经正式发布,并且与它们关联着版本号。将一个版本(例如,版本 0.46.1)称为稳定版本并不意味着它是完美的且从不崩溃;这仅仅意味着这个版本已经接受了相当数量的测试,文档更加完整,并且这是大多数人使用的版本。实际上,除了其稳定性外,运行稳定版本的最大优势是这是其他用户运行的版本,因此,其他 Inkscape 艺术家更有可能帮助你。
总体来说,我建议你从稳定版本开始,但如果发现你喜欢 Inkscape 并想支持其开发,或者你需要自发布以来添加的新功能(访问下一版本的发布说明以查看正在开发的内容)。
使用 开发版本 有其独特的优势。首先,这些构建包含所有最新的最佳功能,与最新的稳定版本相比,这些新功能通常非常显著(尤其是如果自上次稳定发布以来已经过去了几个月)。这些新功能通常包括对稳定版本中重要错误的修复。此外,通过运行开发版本,你帮助开发社区发现和解决新的错误。自然地,活跃的开发者对开发版本更感兴趣,因此你更有可能直接从开发者那里获得及时的帮助。
但稳定性如何呢?诚然,开发版本平均来说有更多的错误,崩溃得更频繁。然而,如果你遇到了一个真正让你抓狂的错误——并且如果这个错误没有足够快地得到修复——你总是可以回到最新的稳定版本。(记住,无论使用哪个版本,都要经常保存!)
注意
Inkscape 的稳定版本仍然编号在 1.0 以下,每个版本的增加只是版本号增加 0.01(例如,0.40 之后是 0.41,然后是 0.42,依此类推)。最近,稳定版本之间通常有几个月的时间间隔。通常,一个 0. xx 稳定版本之后会跟着一个 0. xx. 1 错误修复版本(例如,0.45 在一个月内被 0.45.1 所跟随),它不会添加新功能,但会修复一些错误。0. xx 版本之后的开发构建被指定为 0. xx+svn(例如,0.46+svn),每个构建都有一个修订号(例如,r20887)。你可以通过打开帮助 ▸ 关于(查看关于窗口的右上角)或通过带有--version参数的命令行运行 Inkscape 来查找你的 Inkscape 安装的确切版本号、修订号和构建日期(在 Windows 上不适用,附录 C)。
幸运的是,稳定版本和开发版本的安装同样简单。只需访问 Inkscape 网站的下载部分(www.inkscape.org),然后根据链接选择适用于你的操作系统的稳定版本或开发版本。
Windows
- 你将下载一个.exe安装程序。只需运行它,按照提示选择语言、目录和其他选项。最后,你将在桌面上和开始菜单中看到一个可点击的 Inkscape 图标。
注意
有时,Windows 的开发版本是带有.7z扩展名的存档文件。下载免费的解压缩工具www.7-zip.org。使用这种构建版本,你只需要将文件解压缩到某个目录,它就会在那里很好地运行。
Linux
-
有几种选择。如果你只需要一个稳定版本,大多数 Linux 发行版已经包含了一个;只需在你的软件安装应用中选择它(例如,在 Ubuntu 上,启动 Synaptic 或直接从命令行运行
apt-get install inkscape)。然而,这个版本通常相当旧。如果你想下载一个较新的稳定版本或开发版,请下载所选版本的 autopackage。在获取.package文件后,使其可执行并运行它。(第一次这样做时,你将提示下载和安装 Autopackage 程序本身;一旦允许,所有操作都将自动完成。)按照提示操作。一旦安装了包,你将在系统菜单和/或在桌面上找到 Inkscape(当然,你也可以通过在终端中键入
inkscape来运行它)。
Mac OS X
- 你将下载一个磁盘映像 (.dmg) 文件;只需在 Finder 中打开它,并将内容拖到系统上的某个位置。请注意,你需要从 Apple 的 OS X 安装盘中安装 X11,以便 Inkscape 能够运行。
新的开发版本相当频繁地发布,通常每天都会发布。如果您需要最新的 Inkscape,或者由于某种原因上述方法对您不起作用,您可以直接从 SVN 仓库获取 Inkscape 的代码并自行编译。在所有主要平台上都可以编译 Inkscape;然而,它需要高于平均水平的计算机知识,所以我们在这里不讨论它。
2.2 Inkscape 的“Hello, World!”
学习一门新的编程语言通常从“Hello, world!”示例开始。这是一个最小化但真实且可运行的程序,它简单地输出字符串“Hello, world!”并在某处退出。让我们通过一个最小化但真实的 Inkscape 编辑会话来了解这个过程,包括启动程序、创建一些对象、编辑它们,并保存结果。
启动 Inkscape 与启动任何其他程序没有不同。根据您的操作系统和个人偏好,您可以点击图标、从菜单中选择它或在命令行中输入inkscape。无论您使用什么,最终都会得到一个默认的 Inkscape 界面:

图 2-1. Inkscape 的第一印象
Inkscape 的窗口显示中间的白色工作区域,称为画布,以及边缘的一组工具和控制。画布是我们现在感兴趣的部分。它代表 Inkscape 为我们创建的新、空白的文档,因此您不需要选择文件 ▸ 新建。我们可以立即开始工作。
在左侧的图标列中,点击带有蓝色方形的图标。这是矩形工具,它允许您创建和编辑矩形。现在,在画布上的任何位置点击鼠标按钮并拖动。会出现一个蓝色矩形;当您释放鼠标时,矩形将作为您文档中的新对象创建:

图 2-2. 我们创建了一个矩形。
现在,点击左侧的A按钮,这将切换到文本工具。点击(但不要拖动)矩形内部。你会在点击的地方看到一个闪烁的文本光标。输入Hello, world!。你刚刚创建了一个文本对象,这是你文档中的第二个对象:

图 2-3. 我们添加了一些文本。
现在,你可能对对象的尺寸、位置或颜色有了更好的了解。简单的修复!在左侧的工具栏中,点击显示箭头的最上面的按钮。这是选择工具。现在您可以通过鼠标拖动将任何对象移动到画布上的任何位置。要更改对象的颜色,只需将颜色从窗口底部的调色板拖动到对象上即可。
调整得足够了。文档看起来完美。唯一的问题是它还没有保存到文件中。只需选择 文件 ▸ 保存,导航到您选择的目录,并输入一个文件名。就是这样:您已经创建了一个包含图形和文本的新 SVG 文档。恭喜!
2.3 界面概述
现在,让我们更仔细地看看 Inkscape 的界面:

图 2-4. Inkscape 界面元素
当然,您不必使用 Inkscape 默认启动时的小窗口。您可以自由地将其最大化以填充整个屏幕。您甚至可以按
进入全屏模式。
窗口的大部分区域被 画布 占据,周围有标尺(顶部和左侧)和滚动条(底部和右侧)。在画布上,您可以看到一个页面的矩形阴影(默认为 A4 纸张大小)。这个 页面框架 定义了您文档的边缘。然而,Inkscape 允许您在页面上和页面外自由绘制:页面框架不是限制,而是一个提示。这个框架只有在导出某些矢量格式和在外部查看器中查看 SVG 文件时才有意义;在这两种情况下,您将只能看到与页面矩形重叠的对象。如果您不关心它,可以轻松地隐藏页面框架。
您看到的画布部分远非所有画布。实际上,画布如此巨大,几乎无限。您可以通过缩放或向任何方向滚动来看到更多内容,正如我们将在下一节中看到的。在 Inkscape 中您永远不会缺少空间!(实际上,您甚至可能会在画布的浩瀚中迷失方向;要返回页面框架,只需在任何时候按
键即可。)
在画布左侧,有一个垂直的 主工具箱。这个工具箱上的按钮激活各种 Inkscape 工具。每个工具都有自己的目的、功能、控件、键盘快捷键、鼠标光标和其他内容。一些工具创建新对象,其他工具以各种方式编辑它们,还有一些工具帮助您在文档中导航。我们将在本章中简要介绍一些工具,并在本书的其余部分详细探讨它们。
在画布上方,您可以看到另外两个工具栏,都是水平的。其中,顶部的工具栏称为 命令栏,是您在许多程序中都能找到的常规工具栏。它有用于 保存、打开、撤销 等操作的按钮。另一个工具栏位于画布上方,更有趣:它被称为 工具控制栏(或简称 控制栏)并包含适用于当前选中工具的各种选项和控制。点击左侧的一些工具按钮,并观察控制栏的内容如何变化。
在画布下方是调色板;它可以通过其自己的滚动条水平滚动。再往下,是状态栏,一个杂乱无章的物品袋,其组件我们将在稍后详细探讨。现在,请注意状态栏的消息区域,它始终显示与您当前操作相关的某些消息。请注意消息区域的内容;它可能为您节省大量时间和挫折!
最后,在画布右侧是 Inkscape 对话框的停靠栏。默认情况下,停靠栏是隐藏的,但如果您调出一个对话框(例如,通过按
打开的填充和描边对话框),它将出现在自动展开的停靠栏中:

图 2-5. 几个已停靠的对话框(以及一个浮动对话框)
停靠栏可以包含许多不同的对话框;如果它们太多以至于无法垂直排列,停靠栏会显示滚动条。停靠栏中的每个对话框都可以最小化(带有三角形的按钮)或关闭(带有 X 的按钮)。您可以在停靠栏中拖动对话框以重新排列它们。您还可以将对话框从停靠栏拖出,在这种情况下,它变为浮动,可以放置在屏幕上的任何位置。然而,在大多数情况下,使用停靠对话框更为方便。
注意
截至版本 0.47,并非所有 Inkscape 对话框都可以停靠(有关更多信息,请参阅3.7 对话框)。
除了菜单、画布和停靠栏之外,界面的所有元素都可以通过视图 ▸ 显示/隐藏子菜单中的命令来显示或隐藏。
2.4 平移和缩放
对于无限矢量画布,能够移动画布以及放大和缩小以获得更方便的视图的能力非常重要。Inkscape 提供了大量的平移(滚动)和缩放方法,足以满足每个人的口味。
当然,画布滚动条可以很好地滚动画布到您想要的位置。然而,这些滚动条并不那么方便,所以我通常通过按
隐藏它们。相反,我最常用的方法是中间拖动:在画布上的任何一点按下鼠标中间按钮并向任何方向拖动。中间拖动在任意工具或模式下都有效。
注意
如果您认为您的鼠标没有中间按钮,尝试按下(不是滚动)大多数鼠标在左右按钮之间中间的滚轮。在大多数情况下,这个滚轮可以像按钮一样点击。当然,旋转滚轮也可以垂直滚动画布,而使用
旋转滚轮则水平滚动。
然而,很多时候,我的右手在键盘上而不是鼠标上。在这种情况下,最方便的滚动画布的方式是按
。例如,如果你按住
,画布开始向下滚动(即,你的视图开始向上移动),最初速度较慢,但逐渐加速。当你习惯了,这感觉非常自然。
缩放和缩小也很容易。使用键盘,只需按加号
或减号
键即可缩放或缩小(注意,与大多数其他程序不同,这些只是普通的加号和减号键,无论是在主键盘还是在数字键盘上;你不需要按
或
)。使用鼠标,点击中间键来放大,
-点击中间键来缩小。或者,切换到缩放工具,你可以使用常规的左键点击来放大,
-左键点击来缩小,或者用左键拖动来放大到矩形区域。
要获取更多关于缩放和滚动的信息和技巧,请跳转到3.8 基本缩放。
2.5 创建对象
现在你可以在画布上导航了,让我们更仔细地看看可用于创建对象的工具。
朝下看主工具箱,第一个创建对象的工具是矩形工具。这个工具和接下来的四个工具——3D 盒子、椭圆、星形和螺旋——统称为形状工具,它们创建的对象称为形状。

图 2-6. 使用形状工具
形状是一种几何对象,你不仅可以移动、缩放或旋转(就像其他任何对象一样),还可以以特定于其类型的方式编辑。例如,矩形可以有圆角;椭圆可以被转换成一段(饼形形状)或椭圆弧;3D 盒子可以在其自己的 3D 空间中移动和调整大小。我们将在第十一章中讨论形状;现在,选择任何形状工具并在画布上开始绘制。每次鼠标拖动,从按下到释放左键,都会创建一个新的形状。
在工具箱的下一部分是铅笔和钢笔工具。两者都创建任意路径,但方式不同。铅笔工具就像一支真正的铅笔:你在画布上绘制,并留下痕迹。(注意,这个痕迹并不精确;与实际的鼠标轨迹相比,它有点平滑。)

图 2-7. 使用铅笔和钢笔工具
钢笔工具更复杂;它假设你理解路径是由节点通过直线或曲线段连接而成的。现在,只需用这个工具在不同的点点击几次(这会在点击点之间创建直线段),然后点击并拖动几次,最后按下
以完成路径。铅笔和钢笔默认创建带有细黑描边的路径但没有填充。我们将在第十四章中讨论这些工具。
接下来的两个工具,书法笔和油漆桶,也创建路径,但与铅笔和钢笔不同,它们默认产生填充路径而没有描边。书法笔是 Inkscape 中最多才多艺的工具之一;它的许多选项和参数允许它模仿不仅书法笔(这是它的原始目的),还有各种画笔和许多其他绘图工具和行为(其中一些在现实世界中没有对应物)。这是那些使用 Inkscape 来简单绘图的人的主要工具(第十四章)。

图 2-8. 使用书法笔和油漆桶工具
油漆桶工具对于漫画家或插画师来说也是一个非常有用的工具。正如你所期望的,它可以填充任何封闭区域,创建一个填充的矢量路径。为了练习,用书法笔在封闭区域内画几笔,然后点击油漆桶工具。 (如果你在一个非封闭区域内点击,工具将无法填充,并在状态栏中提示。)
最后,文本工具用于创建和编辑文本对象。创建一个新的文本对象非常简单,只需点击任何位置并开始输入。或者,你可以点击并拖动,在这种情况下,你正在创建一个流式文本对象,当你输入到右边时它会自动换行。编辑现有的文本对象同样简单:使用文本工具点击它以定位光标,并使用所有熟悉的文本编辑键(箭头键,
,
,
,等等)。文本工具是第十五章的主题。

图 2-9. 使用文本工具
那么,如果你需要在 SVG 文档中有一个位图对象,比如照片呢?这不是通过工具完成的,而是通过文件菜单中的导入命令。只需选择任何位图图像文件(JPG、PNG、GIF 和 TIFF 都适用),它就会被插入到你的文档中。然而,它仍然是一个位图;有关将其转换为矢量对象的方法,请参阅18.6 位图过滤器。
2.6 选择
如你可能已经注意到的,在你创建一个新对象(例如,使用矩形工具或书法笔)后,该对象周围会有一个虚线框。这个框表示对象是选中的。
选择是 Inkscape 中的基本概念。几乎所有工具、命令、对话框和快捷键都只对当前选中的对象有效。各种信息显示,如状态栏,总是描述选中的对象。快速准确地选择所需内容,以及快速了解当前选中内容和位置,对于在 Inkscape 中有效工作至关重要。
允许你选择对象的工具被称为,恰如其分地,选择工具 (图 2-10). 它也是工具箱中的第一个(最上面的)工具,因为选择非常重要。你可以通过点击其按钮或按任意![httpatomoreillycomsourcenostarchimages1735356.png.jpg]、![httpatomoreillycomsourcenostarchimages1735358.png.jpg]或![httpatomoreillycomsourcenostarchimages1735308.png.jpg]来切换到这个工具。你真的不会错过这个工具!

图 2-10. 选择工具和选中的对象
使用选择工具进行基本选择非常简单(在 Inkscape 中任何其他基本事物也是如此)。你只需点击任何对象,voilà,它就被选中了。现在试试看。同时也要注意状态栏消息立即更新,告诉你你确切选中了什么:一个矩形、一个路径、一个椭圆、一个文本对象等等。
任何时候都可以选择多个对象,如图图 2-11 所示。通常,当你已经选中了某个对象时,点击另一个对象会取消第一个对象的选中。然而,如果你![httpatomoreillycomsourcenostarchimages1735338.png.jpg]-点击任何未选中的对象,你会添加它到选中对象列表中。(如果你![httpatomoreillycomsourcenostarchimages1735338.png.jpg]-点击一个已经选中的对象,你会移除它从选中状态。)注意状态栏关于你新选中的对象的说明。也要注意每个选中的对象都有自己的虚线框。

图 2-11. 多个对象被选中
需要一次性选择 1,000 个对象?无需进行![httpatomoreillycomsourcenostarchimages1735338.png.jpg]-点击 1,000 次。使用选择工具,只需拖动(按住鼠标按钮并移动鼠标,同时不释放按钮)穿过你想要选中的所有对象。你会看到一个跟随鼠标的矩形橡皮筋。当你释放鼠标时,所有完全位于橡皮筋内的对象将被选中:

图 2-12. 使用橡皮筋选择多个对象
你也可以通过键盘快捷键进行选择。
键具有“转到下一个”的通用含义,所以在 Inkscape 中,按
会选择下一个对象(通常是创建的顺序)。
选择上一个对象。熟悉的
,在许多程序中意味着全选,也按预期工作。
需要不同的选择?通过按
或点击空白画布上的任何地方(不是对象)来取消任何已选择的内容。
这只是 Inkscape 提供的所有选择方法和技巧的一小部分,但应该足以让你开始。让我们继续实际改变我们已选择的内容。
2.7 变换
选择工具的另一个功能,除了选择对象外,是变换它们。
2.7 变换是一个简单的总称,指的是移动、缩放(调整大小)、旋转和倾斜。其中前两项——尤其是移动——在矢量工作中极为常见,因为几乎不可能一次就创建出所需精确位置和大小的大多数对象。你会发现你经常需要移动东西,所以你需要学会如何快速而精确地做到这一点。
注意
所有四种变换模式都将对象视为一个整体。通过变换,你可以移动、挤压、旋转或倾斜整个对象,但你不能相对于其他部分移动对象的一部分;这是其他工具的任务。例如,如果你的脸部绘画中的鼻子是一个单独的对象,你可以仅使用选择工具将其在脸上放大。但如果鼻子是脸部其余部分的对象的一部分,你需要使用其他工具来放大鼻子,而不会改变脸部。
使用选择工具移动选择项非常简单:只需用鼠标拖动所选的任何对象。如果你选择了多个对象,拖动其中的任何一个都会将它们全部移动。
一个非常常见的操作是复制对象,或者制作所选内容的精确副本。要这样做,请按
;创建一个副本并将其放置在原始选择项的上方(因此看起来没有变化)。只需用选择工具将其拖动到你想要放置副本的位置。你还可以使用传统的复制和粘贴方法来复制对象(
,
)。
其他类型的变换稍微有些困难。注意,每次你选择任何东西时,选择区域周围都会出现八个箭头标记。拖动这些箭头标记之一执行缩放:这就是你如何使选择区域变大、变小、变高、变宽等等。四个角上的箭头可以向任何方向移动,自由调整选择对象的尺寸;其余的四个箭头只能向一个方向移动(顶部中心和底部中心标记垂直移动,左侧中心和右侧中心水平移动)。

图 2-13. 缩放对象
对于剩下的两种变换模式,旋转和倾斜,你需要点击任何已经选择的对象的任何位置,或者也可以按
。注意箭头标记如何变化;现在你的选择处于旋转模式,而不是我们之前使用的缩放模式(图 2-14。下次选择这些或其他对象时,它们将首先进入缩放模式。

图 2-14. 旋转和倾斜对象
如果你更喜欢通过键盘控制 Inkscape,你可能会惊讶地发现,四个箭头键各自将选择区域移动到相应的方向。更有趣的是,左右尖括号(
和
)分别将选择区域缩小和放大,而方括号(
和
)则旋转它。没有倾斜对象的快捷键。
这就是使用选择工具进行对象基本变换的全部内容。再次强调,还有许多其他技巧、快捷方式和经验法则我们将在以后讨论,但到目前为止,这应该足以让你对 Inkscape 的工作方式有一个大致的了解。
2.8 样式化
Inkscape 中的任何对象都有一些样式。样式是一个复杂的概念,包括许多单独的属性,从填充的颜色到笔画的宽度,再到完全改变对象外观的复杂 SVG 滤镜。让我们看看如何改变对象样式的基础知识。
首先,你现在应该已经猜到了,任何在 Inkscape 中的操作,包括改变样式,都是应用于当前选择的。也就是说,在你改变某个对象的样式之前,你必须首先选择那个对象。
一旦你选择了想要样式的对象,最简单的事情就是点击画布底部的调色板。你点击的颜色将成为所有所选对象的新填充颜色。即使对象完全没有填充(比如用铅笔工具创建的路径),它也会被这种颜色填充。(注意,你可以向右滚动调色板以查看屏幕上无法显示的更多颜色。)

图 2-15. 从调色板设置填充或描边
你同样可以轻松地改变所选对象的描边颜色:只需点击而不是点击一个颜色。同样,如果某些对象没有描边,现在它们将会有描边。
现在,请注意 Inkscape 窗口左下角的状态栏左侧的复杂控制。这个控制(如图 2-16 所示)被称为选择样式指示器,正如其名,它指示了选择对象的样式(实际上,它只显示了最重要的样式属性;一个对象的样式远不止这个指示器所显示的)。简单来说,在这里你可以看到所选对象的填充和描边颜色。

图 2-16. 选择样式指示器
可能更重要的是,你还可以在这里改变这些样式属性。一个非常常见的操作是从所选对象中移除填充或描边。只需在填充(顶部)或描边(底部)色块上中击,或者右击相应的色块并从弹出菜单中选择移除。注意,没有填充和描边的对象是完全不可见的:你无法看到它,也无法点击它来选择(尽管你可以拖动橡皮筋围绕它来选择它)。
除了填充和描边颜色之外,一个重要的样式属性是不透明度。想象一下有自己颜色的彩色玻璃,但它仍然显示出其背后的东西;这就是在 Inkscape 中不透明度小于 100%的对象的行为。显然,0%的不透明度会使对象变得不可见。不透明度通过选择样式指示器中的O:控制来改变。尝试选择一个位于其他对象之上的对象,并输入不同的不透明度值;注意对象如何变得半透明。

图 2-17. 改变不透明度
如果您只想让两个对象具有相同的样式,这很容易做到。选择第一个对象并按
;这将在剪贴板上放置对象的副本。然后选择其他对象(或多个对象),并通过按
将剪贴板对象的样式粘贴到它们上。这是使多个对象看起来相同的最简单方法。
2.9 保存和导出
现在,假设您在 Inkscape 中创建了一些东西,您希望与他人分享。最好的方法是什么?
将文档保存为 SVG 如预期那样工作。只需按
或从菜单中选择 文件 ▸ 保存,选择目录,输入文件名,然后点击 保存。
就分享而言,SVG 并不是一个坏格式;例如,如前所述,它可以在任何现代浏览器中直接显示,展现出所有的矢量魅力(除了微软编写的那个)。然而,由于各种原因,SVG 可能不是您情况下的可行选择。在这种情况下,您需要将文档导出为其他格式。再次转到保存对话框。注意右下角的下拉列表;现在它显示为 Inkscape SVG,但您可以看到还有其他可用的选项。实际上相当多!列出了十几种不同的矢量格式。
尽管如此,不要过于兴奋。这些格式中的几个只是 Inkscape SVG 主格式(普通 SVG、压缩 SVG 等)的变体。其他格式在各个方面都有严重限制,要么是因为目标格式本身与 SVG 相比有限,要么是因为 Inkscape 对该格式的导出器尚未完全开发,或者两者兼而有之。这些导出格式是可用的,但只有在你了解限制并考虑到这些限制来设计文档的情况下。
除了 SVG 之外,也许最安全的导出格式是 PDF (附录 B). 它仍然无法处理一些 SVG 功能(如默认情况下被光栅化的滤镜),但对于您在 Inkscape 学习的早期阶段将要创建的简单文档,它应该完全足够。PDF 的主要优点是,首先,它是矢量格式,其次,Adobe Acrobat Reader 和其他 PDF 查看器的用户比任何能够查看 SVG 的程序都要多。
如您可能已注意到的,保存对话框仅列出用于导出的矢量格式。但关于导出为位图图像怎么办?这是在另一个名为导出位图的对话框中完成的。^([6]) 通过按
或选择 文件 ▸ 导出位图 (图 18-16) 来打开它。
在导出位图对话框的顶部,有四个按钮用于选择导出什么。如果你在绘制图像时尊重页面框架,从而很好地包围了你的艺术作品,请选择页面。否则,选择绘图以使导出区域覆盖图像中的所有对象,无论它们在哪里。你也可以选择只导出当前选区。
然后,设置你的栅格图像所需的像素大小或位图的分辨率(这两个值显然是相互关联的:增加一个会增加另一个,反之亦然)。最后,输入或浏览导出文件名并点击导出。(导出后,对话框仍然打开,原因将在**18.9.1 导出位图对话框中变得清晰)。
你完成了!拿出你保存或导出的文件,向世界展示。
^([6]) 实际上,这个对话框应该正确地称为导出 PNG,因为从 0.47 版本开始,它导出的唯一栅格格式是 PNG。尽管如此,在大多数情况下这并不是一个大问题。PNG 可以在所有浏览器中查看(尽管微软的 Internet Explorer 有一些问题,但它可以查看 PNG),支持全 RGB 颜色和渐变(alpha)透明度,并且是一个通用的格式,非常适合任何矢量艺术作品的呈现。如果你真的需要 JPG、GIF 或 TIFF,你可以使用任何数量的专用工具将 PNG 转换为所需的格式。
2.10 一个最终示例
让我们将我们迄今为止学到的知识应用到稍微复杂一些的插图上:一个愚蠢的,类似《南方公园》风格的男孩的脸。当然,这并不是一个很大的挑战,但它应该有助于巩固你所学到的所有新知识。
要开始,运行一个新的 Inkscape 实例,或者如果你已经在运行 Inkscape,按
创建一个新的空文档。
选择椭圆工具并绘制一个椭圆(图 2-18
图 2-18. 一个椭圆
在头部椭圆的上方绘制一个较小的椭圆。发生了什么——它是看不见的吗?!不。椭圆(像大多数其他工具一样)只是记住了你分配给头部的颜色,现在为新的椭圆使用了相同的颜色,所以它看起来合并到了较大的头部椭圆的背景中(尽管你仍然可以看到它周围的选区框)。将调色板滚动到左边,点击白色色块以查看较小的椭圆:

图 2-19. 两个椭圆
这个较小的椭圆应该是男孩眼睛的白色部分。它可能并不完全是你想要的眼睛大小,而且对于眼睛来说位置也很奇怪。切换到选择工具,并将小椭圆拖动到你大致想要的位置。然后拖动角落的箭头标记之一,使其大致达到正确的尺寸,如图图 2-20 所示。

图 2-20. 定位第二个椭圆
现在我们还需要另一个椭圆来绘制眼睛的瞳孔。然而,我们不会回到椭圆工具,而是使用复制。在白色椭圆仍然被选中的情况下,按
。看起来没有明显的变化,但我们知道现在那里有两个椭圆,新的一个被选中。单击黑色色块,然后再次拖动箭头标记使瞳孔更小,并将其拖到合适的位置:

图 2-21. 头部和一个眼睛
眼睛已经准备好了——但我们需要两个相同的眼睛。让我们复制我们创建的整个眼睛。眼睛由两个独立的对象组成,所以在复制之前我们需要选择它们两个。你可以通过围绕眼睛拖动橡皮筋来完成这个操作(但确保从空白区域开始拖动,而不是从头部椭圆开始,否则你会拖动头部,这不是你想要的!),或者只需单击瞳孔,然后
-单击白色。按
并将第二个眼睛向侧面拖动(当你拖动任何一个时,两个对象都会移动)。

图 2-22. 头部和两个眼睛
现在,为了完成绘画,选择书法笔工具并绘制鼻子、嘴巴、耳朵和一些头发(图 2-23). 如果路径出现在某些错误颜色中,请单击调色板上的黑色;之后,所有新的书法路径也将是黑色。如果笔绘制得太宽或太细,请调整工具控制栏上画布上方的宽度值。如果某些东西出了问题,请按
撤销。

图 2-23. 欢迎来到这个世界!
图片已经准备好了,但我们还没有完全利用它所提供的所有可能性。你到目前为止所做的一切在位图编辑器中同样容易完成。但我们现在使用的是矢量图,所以让我们利用矢量图的具体优势来玩转结果。使用选择器,选择两只眼睛的白色部分,放大或缩小它们。或者移动瞳孔的位置。或者调整嘴巴的大小、旋转和移动。所有这些操作都能创造出丰富的面部表情。你还可以选择、复制并拖动整个绘制来展示几个例子并排:

图 2-24. 生命及其众多面容
保存或导出结果。这就完成了!
第三章. 设置和导航
在第一篇介绍性章节之后,这一章将最终以严肃的方式让您开始使用 Inkscape。从现在开始,我们将以最大程度的细节探讨实际主题,不留任何遗漏。很难预测您会发现哪些功能或技术最有用;这很大程度上取决于您工作的性质和您的个人品味。这就是为什么这本书试图涵盖 Inkscape 提供的所有内容。
在这一简短的章节中,您还不会创建或编辑任何对象。相反,您将准备您的 workspace,讨论一些有用的自定义设置,并学习通过缩放和平移导航文档的技术。
3.1 首选项
Inkscape 是一款极其可配置的软件。在这本书的整个过程中,我们将提到您可以通过更改来探索程序功能并更好地适应您工作方式的各类 Inkscape 首选项。因此,在您开始使用 Inkscape 进行任何重要的事情之前,让我们看看如何在 Inkscape 中设置和存储所有这些不同的首选项。
Inkscape 中的所有用户首选项都属于两大类之一。
3.1.1 Inkscape 首选项
Inkscape 首选项(有时称为全局首选项或简称为首选项)影响程序中不依赖于您正在编辑的特定文档的那些方面。这些首选项包括各种工具和快捷键的默认行为、各种对象类型的处理细节、显示和颜色管理选项等。
大多数这些选项都在Inkscape 首选项对话框中设置(按
或选择文件 ▸ Inkscape 首选项)。然而,一些首选项是通过命令设置的;例如,当您通过按
(或从视图 ▸ 显示/隐藏子菜单中选择等效命令)隐藏滚动条时,该设置也会作为全局首选项被记住。

图 3-1. Inkscape 首选项对话框滚动页面上的浮动工具提示解释了一个选项。
在整本书中,我们将讨论相关的特定全局选项,并引用Inkscape 首选项对话框的相应页面(页面列表显示在对话框的左侧)。对话框中的所有选项都有有用的描述;如果您需要帮助,将鼠标悬停在选项上并阅读浮动工具提示(图 3-1)。
注意,该对话框没有保存或应用按钮。大多数更改立即生效。少数更改需要您重新启动 Inkscape,这将在选项描述中提及。当您退出程序时,所有全局首选项都会自动保存。
存储全局首选项的文件称为 preferences.xml。其位置取决于您的平台;在 Linux 上,它是您家目录中的 .config/inkscape 目录;在 Windows 上,它可以在 Documents and Settings<your login>\Application Data\Inkscape 中找到。
注意
一些不常用的选项没有用户界面;设置它们的方法是手动编辑 preferences.xml 文件。这是一个格式简单且大部分可以自我解释的 XML 文件。通常,您将收到指示更改具有特定 ID 的元素的特定名称属性,例如, printing。然后您将使用文本编辑器打开该文件,搜索字符串 id="printing",并编辑该元素中指定的属性值,例如通过将 attribute="old" 替换为 attribute="new" (请注意,属性值始终在引号中)。
3.1.2 文档属性
另一方面,文档属性适用于单个文档。此类选项包括画布的大小和方向、默认测量单位、各种吸附选项、吸附网格和辅助线的状态等。大多数这些选项都在文档属性对话框中设置:

图 3-2. 文档属性对话框的页面选项卡
文档属性会自动保存为它们设置的 Inkscape SVG 文档的一部分。这意味着,例如,如果您在一个文档中更改了吸附模式,它们将在您下次加载该文档时被记住,但它们不会影响其他文档。要更改新创建文档的文档属性,您需要编辑创建这些文档所使用的文档模板,正如您将在下一节中看到的。
3.2 文档模板
当您运行 Inkscape 时,它会自动为您创建一个基于默认模板的新文档。Inkscape 的窗口在没有加载任何文档的情况下无法存在,因此如果您不提供一些现有文档来加载,它将为您创建一个新的文档。
如果您需要在编辑另一个文档的窗口中创建一个空文档,只需按
或转到文件 ▸ 新建子菜单。此子菜单列出了许多用于新文档的文档模板。默认模板——您通过
调用的模板——是列表中的第一个,但还有相当多的其他模板。
文档模板 只是一个包含特定页面大小、默认度量单位和其他文档属性的常规 Inkscape SVG 文档。要创建新文档,Inkscape 简单地复制一个模板。通常模板是空的,但它可以包含任何对象,以及显示任何捕捉网格或辅助线。Inkscape 随附了一系列模板,包括标准纸张大小、标准图标和网页横幅大小、桌面大小(用于壁纸)、CD/DVD 封面和名片。例如,这是 16x16 像素图标模板的示例(用于创建网站的 favicon),已启用像素网格:

图 3-3. 加载的 16x16 图标模板
您可以将自己的模板添加到列表中。任何比默认空白画布更好的起始文档都可以转换为模板。为此,只需将文档复制或保存到用户模板目录,Unix 系统中为 ~/.config/inkscape/templates,Windows 系统中为 Inkscape 应用程序数据目录内的 share/templates(Documents and Settings<your login>\Application Data\Inkscape)。如果此目录尚不存在,请创建它。在 Inkscape 的 保存 对话框中,左侧面板中有一个名为 templates 的快捷方式;双击它将带您到该目录(此快捷方式在 Windows 上不可用)。
如果您为自定义模板使用相同的名称,甚至可以覆盖任何标准模板。例如,默认模板的名称是 default.svg;如果您在模板目录下以该名称保存文件,它将作为您运行 Inkscape 或按
时的所有新文档的基础。
3.3 键盘设置
Inkscape 的键盘快捷键非常丰富。所有键盘和鼠标快捷键的完整图表(您可以在浏览器中选择 帮助 菜单中的 键和鼠标参考 命令来查看)包含超过 460 个条目。
通常,键盘快捷键不需要任何设置:它们直接工作。然而,有时您可能想要更改其中的一些快捷键或添加新的快捷键,这可能是因为您习惯了来自其他程序的不同的键盘布局,或者仅仅是因为您的工作习惯没有被现有的快捷键充分覆盖。
大多数(尽管目前并非全部)Inkscape 的键盘快捷键都可以由用户进行配置。您还可以为菜单中显示的任何命令分配快捷键,包括 Extensions 菜单中的任何扩展(13.3 路径扩展)。甚至还有一些相对不为人知的命令,它们没有被包含在任何菜单中,也没有默认快捷键,但您可以分配快捷键来访问它们。
注意
你目前无法配置的快捷键包括涉及鼠标点击或拖动的快捷键,以及仅限于单个工具或模式的键盘快捷键(即,只有全局键盘快捷键可以配置)。
Inkscape 的所有键盘配置文件都存储在 Inkscape 安装目录下的keys目录中。在那里,default.xml文件是 Inkscape 启动时读取的唯一文件;这是标准的 Inkscape 键盘布局。
inkscape.xml文件只是default.xml的一个副本。该目录中的其他文件为所有主要的 Inkscape 竞争对手(Adobe Illustrator、CorelDRAW、Xara Xtreme、Macromedia Freehand)以及一些较小的矢量编辑器(Zoner Draw、ACD Systems Canvas)提供了键盘布局仿真。文件right-handed-illustration.xml是标准布局的一个变体,将最常用的命令放在左手下,这样你就可以避免从鼠标或平板上抬起右手。
你可以通过复制相应的文件覆盖default.xml并重新启动 Inkscape 来启用任何这些布局而不是标准布局。请注意,替代布局可能不如主布局完整或更新。开发者将非常感激任何有助于改进这些替代布局或添加新布局的帮助。
通过编辑当前使用的键盘布局文件default.xml,可以更改现有的快捷键或添加新的快捷键。这个 XML 文件结构相当简单,并包含大量的注释说明,所以这里不再描述。
3.4 页面设置
文档属性对话框的第一个标签页,称为页面(见图 3-2),包含一些你将经常更改的一般设置,所以我们现在就来看看它们。(所有其他标签页控制网格、参考线和吸附模式;我们将在第七章中详细讨论。)
3.4.1 文档单位
首先,你可以为你的文档设置默认单位——例如,px(SVG 像素;见A.6 坐标和单位)或毫米(毫米)。这个设置将影响你看到或可以指定长度或坐标的所有地方。例如,选择工具的X、Y、W和H控制显示的是文档默认单位下的值,尽管它们右边有一个下拉菜单,你可以选择任何其他单位(见图 6-10). 类似地,状态栏提示(例如,使用钢笔工具绘制路径时,14.1 钢笔工具)指示的是默认单位下的距离。
3.4.2 背景
您还可以更改文档的背景颜色和透明度(默认为完全透明的白色)。只需单击颜色样本并使用弹出颜色选择器菜单:

图 3-4. 选择页面背景颜色和透明度
更改白色背景的透明度在屏幕上没有可见效果,但它会影响导出的 PNG 文件:如果您的 SVG 文档中有透明背景,它们将只有透明背景。
注意
背景颜色和透明度在其他 SVG 查看器中可能不起作用,它们将始终显示透明背景。Inkscape 的背景颜色设置仅限于在 Inkscape 本身中进行显示和位图导出编辑。如果您想要在所有地方都起作用的彩色背景,请创建一个覆盖整个绘图的背景矩形。
3.4.3 页面大小
接下来,您可以更改页面大小——要么从标准尺寸列表中选择,要么指定自定义尺寸——以及方向(纵向或横向)。Inkscape 的画布几乎是无限的(1.1 向量图形是什么以及为什么它很重要),您可以在其上绘制任何位置,无论是页面内还是页面外。然而,大多数标准 SVG 查看器只会显示页面上的内容,忽略页面边界之外的所有内容。
因此,如果您正在准备以 SVG 格式发布或共享的艺术作品,您可以使用页面外的画布作为剪贴板或工作区域,但然后将最终的艺术作品放置在页面上。打印或导出大多数矢量格式也会忽略页面之外的所有内容。然而,位图导出可以取页面、实际绘图(所有对象)或仅选定的对象,无论它们位于何处(2.9 保存和导出)。
如果您在绘制时没有太多考虑页面边界,但现在希望您的绘图精确地适合页面边界内,一个方便的方法是在“文档属性”对话框中选择“适合页面到选择”按钮。只需选择您希望在最终绘图中的所有对象(
或橡皮筋选择,见 5.7 使用橡皮筋选择) 并单击此按钮,使页面边界正好框选选定的对象。
当您调整页面大小时,您的绘图中的对象相对于顶部和左侧保持固定,而右侧和底部则移动。
然而,在其他时候,你可能根本不在乎页面的大小。例如,你可能正在处理一组图标或徽标,它们都在同一个 SVG 文件中,你并不打算分享 SVG 文件,而是将每个图标导出为单独的位图文件。在这种情况下,页面矩形只是一个干扰。在文档属性对话框底部的页面边框控件允许你更改这个矩形的颜色和阴影,或者完全隐藏它。你还可以将边框放置在绘图上方,使其在可能遮挡页面边缘的任何对象上方保持可见。
3.5 实例、文档、视图
你在屏幕上看到的 Inkscape 窗口(例如图 2-1)。如果该窗口包含一个新且未更改的文档(即,只是一个空画布),它将被打开的文档替换。否则,将为新打开的文档创建一个新窗口。
或者,你可以在调用 Inkscape 时在命令行中列出你想要打开的所有文档的文件名(**C.1 加载文档(向前)或
(向后)。
例如,在一个窗口中,你可以对绘图的小细节进行紧密缩放,同时在另一个窗口中查看整个文档的缩放视图:

图 3-5. 使用同一文档的多个窗口
注意
如果你只是启动 Inkscape 程序两次,你会得到两个 Inkscape 窗口,但这些窗口将属于不同的 Inkscape 实例。在这些窗口之间,同一文档视图的自动同步不起作用。
3.6 文档窗口
Inkscape 窗口的主要组件(图 2-4 *以访问控制栏中的第一个可编辑控件。
Inkscape 窗口的各个部分,除了菜单和画布本身,都可以通过视图菜单中的显示/隐藏子菜单中的命令来隐藏,如图图 3-6 所示。
只留下你需要的东西;隐藏得越多,留给你的绘图空间就越大。我通常隐藏命令栏、标尺和滚动条。大多数时候,我也隐藏调色板,除非我打算使用 Inkscape 进行色彩密集型任务(例如,给卡通上色)。
所有这些选项都会保存在全局首选项中,并在你下次启动 Inkscape 时恢复。此外,Inkscape 的窗口可以切换到全屏模式(按下
或转到视图 ▸ 全屏)。在这种模式下,可见的界面元素集可能完全不同。例如,在常规模式下,你可能显示工具栏和工具控件进行所有编辑,但在全屏模式下,你使用它来以最小干扰查看你的艺术品时,则隐藏它们。

图 3-6. 一个最小的 Inkscape 窗口
3.6.1 窗口几何形状
“窗口几何形状”这个短语指的是一个非常简单的东西:Inkscape 窗口的大小及其在屏幕上的位置。为了尽可能提供帮助,Inkscape 会记住每个文档窗口的大小和位置,并将这些值与文档一起保存。因此,当你下次打开文档时,窗口将以上次保存文档时的大小和位置打开。
在大多数情况下,这很有帮助。然而,有时这更像是一种烦恼——例如,如果你从具有不同屏幕分辨率的某人那里获取 Inkscape SVG 文件,你的屏幕上的窗口可能最终会出现在奇怪的位置。要禁用此行为,请转到Inkscape 首选项对话框的窗口选项卡并更改窗口几何形状选项:

图 3-7. 窗口几何选项
第一个选项禁用了保存和读取窗口几何形状的功能。第二个选项将窗口几何形状设置为全局而非文档级别的偏好设置,因此每次您更改任何 Inkscape 窗口的大小或位置时,此几何形状将应用于随后打开的所有窗口。最后一个选项——文档级别的窗口几何形状——是默认设置。
例如,如果您希望每个新文档都在最大化窗口中打开,您可能有两种方法。首先,您可以使用空文档最大化窗口,然后将空文档保存为 default.svg 到您的模板目录中;窗口的最大化状态将与其一起保存,然后所有新创建的文档都将被最大化。或者,如果您总是最大化所有窗口,只需将窗口几何选项切换到记住并使用最后一个窗口的几何形状(第二个选项)。
除了窗口几何形状外,当前的缩放级别和视图区域始终与文档一起保存,因此当您下次将文档加载到 Inkscape 中时,您将看到相同的缩放级别和位置。
3.7 对话框
除了主编辑窗口外,Inkscape 的用户界面还包含多个较小的面板,称为对话框,每个对话框都有特定的功能。虽然 Inkscape 努力通过工具和快捷键在画布上直接提供大多数编辑操作,但对话框仍然存在并且被频繁使用。
对于每个对话框,通常都有一个菜单命令和一个以
和
(例如,
打开填充和描边对话框)开头的键盘快捷键。新打开的对话框会获得键盘焦点,因此您不仅可以使用鼠标与之交互,还可以使用
键进行导航,使用
和
切换选项卡,在字段中输入值,等等。

图 3-8. 浮动和停靠对话框
要关闭对话框,只需点击右上角的“X”或,如果对话框具有键盘焦点,请按
。要移动键盘焦点回画布而不关闭对话框,请点击画布或按
。如果对话框已经打开,选择其命令或再次调用快捷键不会关闭它,而是将键盘焦点移动到它。
到 0.47 版本为止,大多数对话框都是可停靠的(一些不可停靠的对话框将在未来的版本中变为可停靠)。一个可停靠的对话框可以被停靠——放置在编辑窗口右侧的停靠区域,或者它可能在自己的小窗口中浮动。(不可停靠的对话框始终在单独的窗口中。)此外,浮动对话框可以一起停靠,这样两个或更多对话框就在同一个浮动窗口中。
每个对话框都记得其状态(停靠或浮动),所以当你下次打开它时,它将处于相同的位置。要停靠或取消停靠一个对话框,只需将其标题栏拖到停靠区域或远离它即可。
在图 3-8 中,一个浮动窗口包含两个对话框,另一个包含一个,编辑窗口中的主停靠区域包含另外三个对话框。
如果你不喜欢停靠,请转到Inkscape 首选项的Windows页面,并将对话框行为选项从Dockable更改为Floating。这将禁用停靠,并使所有对话框浮动。
在 Windows 上,浮动对话框有一个令人烦恼的问题:它们不会保持在主编辑窗口的顶部,当你点击编辑窗口时,所有浮动对话框都会“下沉”到它下面。有一个实验性的修复方案可以解决这个问题,你可以在Inkscape 首选项对话框的相同Windows选项卡上启用它。
3.8 基本缩放
缩放(放大或缩小)只是暂时放大你在图纸上的视图,以便你可以检查细节(放大时)或查看整个画面(缩小时)。缩放不会改变图纸本身,只是改变你对它的视图。
向量图形的(几乎)无限可缩放性使得缩放成为向量工作中最常用的操作之一。Inkscape 提供许多不同的缩放方式并不奇怪。
首先,当前缩放级别始终显示在你的编辑窗口的右下角,在Z:可编辑字段中,如图图 3-9 所示。你始终可以点击那里,输入所需的缩放级别,然后按
。

图 3-9. 状态栏中的当前缩放指示器
使用键盘缩放的最简单方法是按下加号和减号键(
和
),相应地。键盘上的键(在大多数台式电脑键盘的最右侧端)与主键盘上的键(在字母键上方)一样有效。此外,等号(
),通常与加号键位于同一物理键上,也可以用于放大,下划线(
),通常与减号键位于同一键上,用于缩小;换句话说,您永远不需要按
来访问缩放键。
使用加号和减号键进行缩放在所有工具和模式下都有效,除了您正在编辑文本时。在文本中,主键盘上的加号和减号键插入相应的字符,但数字键盘上的
和
键仍然可以用于缩放。
通常,您的手在鼠标或平板电脑笔上,伸手去键盘不方便。使用鼠标缩放的最简单方法是按下中间按钮(在许多鼠标上,这实际上不是一个按钮,而是一个可以点击和滚动的滚轮)。点击的点在缩放后将保持其在窗口中的相对位置,因此通过点击某个小对象,您可以放大到该对象——与加号和减号键的缩放不同,后者将缩放到可见区域的中心。要缩小,请按住
键进行中间点击。
此外,使用带有滚轮的鼠标,您可以向上滚动滚轮以放大,向下滚动以缩小。默认情况下,您需要按
键才能这样做,因为不带修饰符的滚轮在大多数其他程序中会滚动文档。然而,有一个选项可以使它不带修饰符进行缩放,并使用
进行滚动;它在Inkscape 首选项对话框的滚动页上设置。
您可以调整加号和减号键、中间点击和单次滚轮点击的缩放程度。此值在Inkscape 首选项对话框的步骤选项卡中设置。默认值为 141%,即 100%乘以大约的平方根 2,这样连续两次缩放键入可以将您放大到 200%。
3.9 缩放工具
Zoom 工具(位于左侧工具栏顶部第四个位置)提供了更多放大方法。实际上,在我的工作中,我从不切换到这个工具,因为它的所有命令和模式都可以通过各种快捷键在任何工具中使用。尽管如此,这个工具作为 Inkscape 放大功能的概述仍然很有用。
首先,在 Zoom 工具中,简单的鼠标单击会放大,而(
)键单击会缩小。然而,有时你可能已经知道想要放大的区域,并且不想通过所有中间放大级别来达到目标放大。在这种情况下,只需使用工具拖动,在该区域周围创建一个矩形橡皮筋,当释放鼠标时,Inkscape 将直接放大到该区域:

图 3-10. 使用 Zoom 工具放大区域
在几个版本之前,使用 Zoom 工具的放大区域功能是偶尔使用它的主要原因。然而,在最近的版本中,这种放大操作可以在不离开当前工具的情况下完成:在任何工具或模式下,按住鼠标中键(
)开始相同的放大区域橡皮筋,并在释放按钮时放大到该区域。
让我们看看 Zoom 工具的控制栏:

图 3-11. Zoom 工具控制栏上的命令按钮
前两个按钮的功能与加号和减号键相同。接下来是三个预定义的放大按钮:100%(也可通过(
)键访问),200%(通过(
)键访问),和 50%。接下来是“缩放到适合选择”按钮(也可通过按下(
)键访问);它会放大或缩小并滚动视图,以便你的当前选择完全适合窗口。接下来的三个按钮对整个绘图(通过(
)键)、页面(通过(
)键)和页面宽度(通过(
)键)执行相同的操作。
最有趣的可能是最下面的两个按钮。如上所述,放大操作不会改变文档,因此不能通过“撤销”命令撤销。然而,还有一种方法可以“撤销放大”。
每次你更改缩放级别时,Inkscape 都会记住之前的缩放和你正在查看的画布区域。通过工具栏上的最后两个按钮可访问的 上一个缩放 和 下一个缩放 命令,允许你在缩放的历史记录中来回移动。例如,如果你在查看整个绘图后放大到一个区域,编辑了一些内容,然后想再次查看整个绘图,你不需要反复按减号键。相反,只需按一下回退键 (
),你将立即回到之前的缩放和视图。当按下与
组合的相同
键时,然后会重新缩放回到相同区域。缩放历史记录是无限的——它存储了你整个编辑会话中所有的缩放。
除了 Zoom 工具栏和键盘快捷键之外,所有相同的命令也都在 视图 菜单的 Zoom 子菜单中可用。
3.10 平移
当你在 Inkscape 中平移文档时,你只是移动窗口内的可见区域而不改变缩放。这基本上与 滚动 相同,除了滚动假设一个单一轴(例如,上下)而平移可以在任何方向进行。它是,与缩放一样,当你在一个矢量编辑器中工作时最常见的事情之一。
Inkscape 文档窗口具有传统的滚动条,你可以使用它水平和垂直滚动以到达画布上的任何位置。然而,滚动条相当笨拙,所以我通常更喜欢其他平移方法,并关闭滚动条 (
) 以腾出更多空间用于艺术品。
使用键盘和鼠标都可以简单地平移。使用键盘,按住
并使用箭头键可以滚动到四个方向中的任何一个。这比听起来更方便,因为如果你按住
并与箭头键一起按下,画布的移动会加速。这意味着你可以通过单次点击
和箭头键来稍微移动画布位置,或者如果你按住的话,可以快速将其移开。
和箭头键滚动的速度(即单次按键的距离)可以在 Inkscape 预设 对话框的 滚动 选项卡中设置。
使用鼠标,最简单平移画布的方法是使用中间按钮拖动它。同样,这适用于任何工具或模式。Inkscape 中没有专门的“手”工具用于平移。您还可以使用鼠标滚轮垂直滚动,以及通过
-wheel 水平滚动。
Inkscape 尽可能使平移自动进行。例如,当您使用选择工具拖动选定的对象并将其推到屏幕边缘时,画布会自动在您下方滚动。此外,当您使用
键选择新的对象或路径节点时,Inkscape 会滚动以使此对象或节点可见。
AI
画布平移是 Inkscape 用户界面与其最大竞争对手 Adobe Illustrator 明显不同的领域之一。许多 Illustrator 用户习惯于通过按空格键并使用左鼠标按钮拖动来进行平移。然而,在 Inkscape 中,按空格键在任何工具中都会暂时切换您到选择工具(再次按空格键将切换回您之前使用的工具)。特别为 Illustrator 用户提供了兼容性选项:按住空格键,左鼠标按钮将拖动画布。在 Inkscape 首选项 对话框的 滚动 选项卡中启用此选项。
3.11 渲染模式
默认情况下,Inkscape 努力将每个文档渲染得尽可能接近根据 SVG 标准应渲染的方式。然而,有时您需要与文档工作,而不仅仅是查看它,这种完整的渲染可能成为障碍。这就是您切换到轮廓视图模式的时候。在轮廓视图中,没有填充,没有透明度,没有颜色,没有渐变,没有模糊,也没有任何其他过滤器。任何对象都显示为一个细轮廓,其宽度(1 屏幕像素)不依赖于缩放:

图 3-12. 正常视图模式(左)和轮廓视图模式(右)中的几个对象
快速键盘快捷键,用于在正常模式和轮廓模式之间切换,是按
与
上的数字键盘上的键。
切换到轮廓视图模式最常见的原因是为了使处理复杂且渲染缓慢的文档更快。此外,在轮廓视图中,查找和访问不可见对象(那些完全透明或隐藏在其他对象下面的对象)要容易得多。在此模式下,所有内容都可见,您可以通过单击其轮廓来选择任何对象。
大纲模式确实使用除了黑色以外的颜色,但它们并不反映对象的填充或描边颜色。相反,颜色用于区分对象类型。常规路径和形状使用黑色轮廓,位图对象(第十八章)是绿色,而蒙版(18.4 剪切和蒙版**)是蓝色。文本对象是唯一一种没有轮廓的对象(它们以黑色填充显示)。
注意
大纲模式不会在全局或文档属性中记住;每次需要时,都必须切换到它。然而,如果你真的需要它,你可以强制 Inkscape 始终以大纲模式启动。为此,你需要编辑你的preferences.xml文件(见3.1 预设),找到具有id="startmode"的元素,并将其outline属性更改为1。
第四章. 对象
对象是 Inkscape 图形的基石。本书的大部分内容将致力于各种类型的对象、它们的属性以及处理它们的技术。然而,无论类型如何,所有 Inkscape 对象都有许多共同之处。
本章以及接下来的两章将详细介绍对象和通用对象操作的基础知识。
4.1 对象属性
Inkscape 提供了用于操作对象各种属性的多个对话框,但其中只有一个非常通用,可以简单地称为对象属性(通过按
或在对象菜单中选择命令来访问)。此对话框相当小,如图 图 4-1 所示。
您需要选择 (第五章) 一个单独的对象来在此对话框中查看其属性。对象的标识符(ID)是文档 SVG 源中相应元素的id属性(附录 A)。其值在此文档中始终是唯一的;Inkscape 自动为所有对象提供唯一的 ID。然而,只要它保持唯一,您仍然可以更改此值。

图 4-1. 对象属性对话框
为对象分配有意义的名称是组织复杂艺术作品的有用方法。然而,ID 并不是做这件事的最佳位置,因为根据 XML 规则,您只能在元素 ID 中使用一个非常有限的字符集:没有空格,只有拉丁字母、数字、连字符、下划线和点。为了提供一个更人性化的替代方案,请在标签字段中设置对象的标签(这对应于 SVG 中的inkscape:label扩展属性)。在这里,您可以为您对象编写任意标签或描述;它可以有任意长度,可以使用任何字符,且不需要唯一。
SVG
标题和描述字段可以包含关于对象的额外自由格式元数据(它们是 SVG 的标准title和desc元素)。由于这些值存储在元素中,而不是属性中,因此它们甚至可以包含子元素,如文本标记(尽管您不能通过对象属性*对话框来这样做)。*
对话框的交互性部分(默认情况下折叠;点击三角形标记展开)允许您编辑用于 SVG 中与 JavaScript 一起使用的交互属性值(如onclick、onmouseover等)。Inkscape 不支持 JavaScript,但如果您想在支持 JavaScript 的查看器中查看您的 SVG,这可能很有用。
在对话框的底部,两个复选框控制所选对象的锁定和隐藏状态。一个锁定的对象是可见的,但大多数选择方法都无法选择它,因此无法更改。一个隐藏的对象既不可见也不可选。
我不推荐隐藏或锁定单个对象。通常,对包含要隐藏或锁定对象的图层进行操作要方便得多。通过图层隐藏和锁定不仅因为一次影响多个对象,而且因为即使图层被锁定或隐藏,也可以轻松访问(通过图层对话框,见4.6.4 图层对话框)并更改其状态。
然而,对于对象,许多用户发现自己陷入了一个陷阱:你需要选择对象来解锁或取消隐藏它,但你无法轻松选择它,因为它被隐藏或锁定。具体到这种情况,对象菜单包含两个命令,取消隐藏所有和解锁所有,这将揭示并使当前图层中的所有对象都可选。
4.2 边界框
通常,一个对象只是画布上的一个可见物,是你绘图的一部分。当然,这并不总是那么简单;有时,看起来像是一个独立对象的东西,要么是某个其他对象的一部分,要么是几个对象的组合。识别单个对象可能需要一些工作和 Inkscape 经验。
然而,无论何时对象在画布上可见,我们都可以使用熟悉的矩形坐标系来测量其大小和位置,水平方向为 X 轴,垂直方向为 Y 轴。在 Inkscape 中,坐标原点始终位于页面框架的左下角(通常在画布上可见为灰色框架),Y 值向上增加,X 值向右增加。
注意
然而,在 SVG 中,坐标原点位于页面的顶部左角,Y 坐标向下增长。Inkscape 在向用户显示坐标时会移动原点并翻转 Y 坐标,但按照 SVG 规则保存所有内容。在查看或编辑原始 SVG 代码时(例如,在 XML 编辑器中4.7 XML 编辑器),你应该始终记住这一点。
画布区域边缘的标尺是测量坐标的一种方法(如果它们被隐藏,请按
来显示它们)。当你将鼠标移过画布时,标尺上的小三角形标记会反映其当前位置。此外,鼠标指针的 X 和 Y 坐标始终显示在状态栏的右端,位于标记为 Z 的缩放字段之前:

图 4-2. Inkscape 的坐标系
刻度尺使用的测量单位与你在文档属性对话框中可以设置的文档单位相同(3.4 页面设置)。要确定刻度尺当前使用的单位,而不打开对话框,将鼠标光标悬停在刻度尺上,直到出现一个浮动工具提示。
现在让我们创建一些对象;例如,使用椭圆工具绘制一个椭圆。你会看到,当对象被选中时,它被一个虚线矩形所包围(图 4-3 和
)。

图 4-3. 物体的边界框始终是垂直的。
选中对象的宽度、高度和坐标始终由选择工具控制栏中的四个可编辑字段报告。X 和 Y 显示框的左下角坐标,而 W 和 H 表示其宽度和高度。(如果选中了多个对象,则这些值反映整个选择的总体边界框。)测量单位可以在右侧的下拉菜单中选择;最初它是文档单位,默认情况下是 SVG 像素(px,见A.6 坐标和单位)。
当然,你可以点击这些字段中的任何一个并输入自己的值,这将导致对象移动(对于 X 和 Y)或缩放(对于 W 和 H)。如果你想宽度变化导致高度成比例变化或反之亦然,点击 W 和 H 之间的锁定按钮来将它们锁定在一起。
在 Inkscape 中,对象的边界框可以是两种类型之一:视觉(默认)和几何。程序始终只使用这些类型之一;要从一个类型切换到另一个类型,请转到 Inkscape 预设 对话框的 工具 选项卡。区别在于,与几何框不同,视觉边界框包括关于对象的所有可见内容——最显著的是其整个描边(9.1 描边宽度),还包括标记(9.5 标记)和滤镜边缘(17.4.4 滤镜区域),而几何框仅包含对象路径的几何轮廓。
因此,使用几何框时,被描边的对象的边缘会落在边界框的外部;这种类型的框对应于在轮廓模式中可见的对象(3.11 渲染模式)。通常,使用 Inkscape 进行技术绘图的人更喜欢几何边界框,而对于几乎所有人来说,视觉选项更有意义。图 4-3 显示了视觉边界框;请注意,它完全包围了椭圆的黑色描边。
4.3 Z-Order
术语 z-order 指的是对象相互叠加的顺序。在 z-order 中位于上方的对象可能会遮挡其下方的对象,如果它们重叠且上方对象不透明的话。术语 z-order 来自于第三坐标轴 Z 的概念,它被想象成垂直于绘图中的 X/Y 平面延伸到观察者。因此,z-order 中较高的对象因此“更靠近”观察者。
你创建的对象总是放置在当前层的 z-order 的最顶层(如果你没有创建任何新层,这将是在整个文档 z-order 的最顶层)。例如,如果你绘制了几个椭圆,每个新的椭圆都会绘制在先前的椭圆之上,如图 图 4-4 所示。

图 4-4. Z-order
注意
在文档的 SVG 源中,z-order 中较高的对象是那些更靠近文档结尾的对象。因此,新对象总是添加到现有元素列表的末尾(通常在当前层内)。
没有选择、变换或样式更改操作会改变对象的 z-order。这意味着你可以在对象保持在其自己的“楼层”上时移动、缩放或绘制它——前提是你已经选择了该对象。(在 5.9 从下方选择对象 中,你会看到存在特殊的方法用于选择 z-order 底部的对象,这些对象不能简单地通过点击来选择。)
然而,通常您需要重新排列绘图中的对象堆叠。Inkscape 有四个命令用于在 z-顺序中移动对象,两个是绝对的,两个是相对的。它们经常被使用,因此可以通过选择器控制栏上的按钮、对象菜单或简单的键盘快捷键访问。绝对命令是:
提升到顶部 (
)
- 将选定的对象提升到对象层的顶部。
降低到底部 (
)
-
将选定的对象降低到对象层的底部。
-
相对命令是:
提升 (
)
- 将选定的对象提升一个步骤(超过一个其他对象)。
降低 (
)
- 将选定的对象降低一个步骤(超过一个其他对象)。
图 4-5 展示了这些命令如何作用于位于矩形堆叠中间的选定椭圆。
注意,相对 z-顺序命令仅考虑与选择重叠的对象(更准确地说,那些边界框与选择边界框重叠的对象)。如果您的选定对象或对象没有与其他对象重叠,提升和降低命令将仅将选择移动到层的顶部或底部。
另一个需要记住的重要事情是,所有 z-顺序命令仅在层内工作。如果您在文档中有多个层,这些层形成它们自己的 z-顺序,并且一个低层对象永远不会在比它高的层上的对象之上。为了重新排列层的 z-顺序,请使用如4.6.2 层菜单中所述的层命令。
有可能同时选择不同层或组中的对象。在这种情况下,z-顺序命令作用于每个选定对象在其自己的层或组内。例如,一个提升到顶部命令可能会改变一个选定对象的 z-顺序,但如果它已经是其层中的最顶层对象,则不会影响其他对象。
4.4 复制、剪切、粘贴和复制
Inkscape 支持所有传统的剪贴板操作:复制、剪切和粘贴。
复制 (
) 记录了程序剪贴板中选定的对象或对象的副本;剪切 (
) 执行与复制相同的操作,但对象随后被删除。最后,粘贴 (
) 将剪贴板的内容放回文档中(但同时也保留在剪贴板中,因此您可以多次粘贴相同的对象)。
粘贴命令有两个变体。常规的粘贴(
)将对象放置在画布上鼠标光标当前悬停的点。这提供了一种方便的方法,可以将对象移动到文档的完全不同的位置;只需从它原来的位置剪切它,滚动和/或缩放到你想要的位置,将鼠标悬停在确切的位置,然后按
。你甚至可以用对象的副本“绘画”,通过移动鼠标并重复按
。
注意
另一个将对象置于鼠标光标下的命令是导入(
);请参阅18.1 导入。
有时候,你可能想要将对象粘贴到其原始位置。这就是粘贴到原位(
)命令的作用。例如,你可以用它来移动一个对象从一个图层到另一个图层,而不改变其在画布上的位置:复制它,切换到目标图层,然后粘贴到原位。
有时候,人们使用复制和粘贴仅仅作为一种获取一个或多个对象副本的方法。在 Inkscape 中,你不需要使用那个解决方案;有一个方便的复制命令(
),它创建所选内容的副本并将其放置在画布上的相同位置。这与复制然后粘贴到原位等效,只是复制不会改变剪贴板的内容。

图 4-5. 改变 z 轴顺序
所有粘贴和复制命令,就像创建新对象的任何其他方法一样,都将新对象放置在当前图层 z 轴顺序的顶部。
注意
如果你在 z 轴顺序的中间选择了某个对象,并想要复制它,但希望复制件保持在同一级别而不是跳到顶部,这通常意味着你的文档需要使用更多的图层。通过将此类对象放入其自己的图层,你可以确保复制它时,复制件将位于该对象的图层顶部,而不是文档顶部。
创建对象副本的另一种方法是冲压。每次你通过在选择工具中拖动鼠标(移动、缩放、旋转或倾斜)变换一个选择时,都可以按
来留下选择的副本,而不会中断交互式变换。例如,如果你抓住并拖动一个椭圆,然后在拖动时按住并保持空格键,被移动的对象将在画布上留下其副本的轨迹。冲压在节点工具中也同样适用,当你拖动节点选择时(12.5.7 移动节点)。
到目前为止讨论的所有对象复制方法都创建了新的独立对象,这些对象以任何方式都与原始对象无关。如果你想创建一个链接副本,它继承原始对象的一些属性并自动更新,请阅读第十六章中关于克隆的内容(ch16.html "第十六章 克隆")。
4.5 组
分组是将多个独立对象组合成一个单一对象的方法。这是一个容易撤销的操作;组合到组中的对象可以被取消组合并再次变得独立。此外,Inkscape 中的许多工具完全忽略分组,允许你直接与单个对象工作,无论它们是否分组。默认情况下,选择工具会选择整个组,但即使在它里面,也有方法在不取消组合的情况下选择组内的对象(5.10 在组中选择)。
要组合一些对象,只需选择它们并选择对象 ▸ 组合 (
)。组可以像任何其他对象一样进一步组合。你甚至可以组合一个单一的对象;例如,选择一个矩形并按
。现在你有一个包含单个矩形的组(这种组在许多情况下可能很有用,例如模糊剪裁的对象;见18.4 剪裁和蒙版)。
当选择单个组时,状态栏会指示该组中有多少成员对象,例如:背景层中的 3 个对象组。
要取消组合一个组,选择它并选择对象 ▸ 取消组合 (
);组不再存在,但所有之前成员现在被释放,仍然保持在画布上的位置(包括对象的坐标和 z 顺序都得到保留)。
你可以选择任意数量的组并将它们一次性取消组合。此外,你可以选择任意数量的不同对象,其中只有一些是组,然后按
;组将被取消组合,但所有非组对象将保持完整。
注意
取消分组命令仅移除最顶层的分组。例如,如果你有一个包含两个其他分组的分组,按下
将释放这两个分组——它们将保持选中但不会被取消分组。你需要再次按下
来取消分组。要取消复杂绘图中的所有分组,只需选择所有对象并持续按下**
,直到状态栏显示,“选择中没有要取消分组的分组”。
XML
在 XML 中,分组是 g 元素(见A.5 图层和分组),它是其成员对象的父元素。这意味着,在其他方面,具有未设置样式属性的对象(8.1.1 绘画)将从其父分组或从树中的祖先继承这些属性。
4.5.1 分组的使用
为什么分组对象?使用分组可能有不同的原因。
-
首先,分组是选择一组对象的一种简单方法:使用选择工具,点击分组中的任何对象,整个分组就会被选中。从这个意义上说,分组是一个“保存的选择”。选中后,你可以像操作多个单独选中的对象一样轻松地移动、缩放或绘制分组。
-
其次,分组是一种快速且简单的方式来组织复杂的艺术作品。当你画中有成千上万个对象时,区分哪些对象应该放在一起是困难的。构建这类复杂文档的一种方式是通过图层,我们将在本章后面讨论这一点。然而,图层往往过于繁琐;如果你只想确保你肖像中鼻子和眼睛的对象永远不会相对于彼此意外移动,那么将它们分组在一起是最简单的方法。
-
最后,有时分组允许你实现其他情况下不可能实现的效果。其中最常见的效果是分组透明度(见8.1.2 透明度了解更多关于透明度的信息)。当你对一个分组应用透明度时,整个分组会变得透明,这可能与对单个对象应用相同级别的透明度产生的效果截然不同(图 4-6)。
在左侧,两个独立对象完全不透明(零透明度)。在中间,它们作为单独的对象变得 50%透明;注意,矩形的角落透过椭圆显示。在右侧,相同的对象被分组,并且整个分组被设置为 50%透明;注意,现在,棋盘背景透过,但矩形的重叠区域仍然被椭圆遮挡,不会显示出来。

图 4-6. 组透明度
注意
由于组透明度和其他类似效果,一般情况下,取消组合一个组并不能保证文档的外观不会改变。
4.5.2 组和 Z 顺序
需要记住的一个重要事情是,作为一个独立对象,组在你的文档的 z 顺序堆栈中有一个自己的位置,并且组中的所有成员都共享其 z 顺序位置。
这意味着如果对象 A 在 B 之上,而 B 在 C 之上,你不能不改变 z 顺序就将 A 和 C 组合在一起。如果你尝试这样做,C 会跳到 A 下面,你将得到一个包含 A 和 C 的组,它们位于对象 B 之上。
在那种情况下,取消组合一个组不会恢复原始的 z 顺序。如果你取消组合“A 和 C”组,你会得到三个独立的对象,但它们现在将按照 A、C、B(从上到下)的顺序排列。(当然,如果你在组合后立即撤销(
),组合和 z 顺序的改变都会被撤销。)
由于同样的原因,你不能将来自不同层的对象组合在一起。层和组都是文档 XML 树的分支,你不能让一个分支(组)从多于一个父分支(层)生长出来。如果你尝试组合来自不同层或不同组中的对象,Inkscape 会抱怨(在状态栏中显示消息)并且不执行任何操作。
4.6 层
在 Inkscape 中,层基本上就是名字所暗示的:“文档内的“级别”或“楼层”,堆叠在一起并包含其他对象”。每个层都有一个名称;层可以很容易地隐藏、锁定或重新排列。
每个对象只属于一个层。要找出对象属于哪个层,只需选择该对象并查看状态栏:它将显示类似矩形在层层 1(在这里,层 1是层的名称)。你可以轻松选择来自不同层的对象,在这种情况下,状态栏将显示,2 个对象在 2 个层。
文档中的某一层始终是当前层。你创建、粘贴或导入的新对象总是添加到当前层。为了使在复杂绘图中的层切换更容易,Inkscape 遵循选择:也就是说,如果你在层 A 中,并选择层 B 中的某些对象(例如,通过点击它),层 B 将成为你的新当前层。相反,如果你更改当前层,你的选择将被取消。
Inkscape 在保存文档时记住当前层,并在你下次加载时恢复它。一个新的文档模板(见3.2 文档模板)通常包含一个初始层,称为层 1;当你加载模板时,它被设置为当前层,所以如果你不创建任何新层,你创建的所有对象最终都会在层 1 中。
正如单个对象一样,层也可以被锁定或隐藏。在锁定层中,对象是可见的但不能被选择。在隐藏层中,对象既不可见也不能被选择。此外,你无法向隐藏或锁定层添加新对象。
通常,当你想要暂时简化复杂艺术品以工作于其某些部分时,层会被隐藏。隐藏复杂的层可以显著加快屏幕重绘,从而使你的工作更加舒适。当你想要某些背景对象可见但不可选择时,锁定层非常有用,这样就可以通过点击或拖动它们来更容易地选择前景对象。
4.6.1 层层次结构
在更高级的水平上,Inkscape 中的层与组密切相关。实际上,层只是 Inkscape 以特殊方式处理的一种组。
XML
在 XML 中,层和组都由相同的元素g表示。唯一的区别是层有一个属性inkscape:groupmode="layer"(A.5 层和组)。
正如组可以包含其他组作为成员一样,层也可以包含进一步的子层。这使得组织复杂艺术品变得更加容易:你可能会拥有一个层次树,其中相关层由一个共同的父层分组,通过提升或降低整个树的分支而不是逐个层来重新排列结构要容易得多。
此外,你可以临时进入一个组,即告诉 Inkscape 临时将此组视为子层并将该子层设置为当前。为此,只需选择该组并双击它,或按
,或者右键单击它并从弹出菜单中选择进入组。
这种技术结合了组的优点(组易于选择、移动、变换、样式、查看其边界框等)与层的优点(层定义了一个可以进入并工作的上下文,例如,通过向其中添加新对象)。特别是,将某些对象移动到现有组中而不取消组合的最简单方法是将对象剪切(
),进入组,然后在那里粘贴对象(
或
)。
要离开一个子层——无论是实际的子层还是你进入的一个组——请按
,或者在任何画布上右键单击并从弹出菜单中选择转到父级。
4.6.2 层菜单
最重要的层命令收集在层菜单中:
-
添加图层、重命名图层和删除当前图层命令执行它们所描述的操作。后两个命令应用于当前图层;第一个命令创建一个新图层,并要求您提供名称并决定是否将其放置在当前图层的下方(默认)、上方或作为子图层嵌入当前图层(参见图 4-7)。图层名称不必唯一,可以使用任意字符。请注意:删除图层会删除该图层中所有对象!
![创建新图层]()
图 4-7. 创建新图层
XML
在 SVG 源中,图层的名称存储在
inkscape:label属性中。 -
两个切换命令仅将当前图层切换到其下方或上方的图层。这些命令仅定义了其他操作的环境;它们不会在画布上改变任何可见的内容,且不可撤销(只有实际改变文档的命令才能撤销)。
-
下两个命令,将选择移动到上方图层 (
)和将选择移动到下方图层 (
),将当前选择移动到当前图层的上方或下方图层。如果当前图层上方或下方没有图层,这些命令将不起作用,并在状态栏中显示消息。通过跨越图层边界,这些命令与在同一图层内工作的常规 z 轴顺序更改命令(如提升或降低(4.3 Z-Order))相辅相成。
注意
以下是将对象从一个图层移动到任何其他图层的(不一定是相邻的)方法:剪切对象 (
),切换到目标图层,并将其粘贴到相应位置 (
)。
-
四个 z 轴顺序命令——提升图层 (
)、降低图层 (
)、图层置顶 (
)和图层置底 (
)——与对象的 z 轴顺序命令(4.3 Z-Order)等价,但它们作用于当前图层,并将它(及其所有对象和子图层)在同级图层中上下移动。请注意,这些命令的键盘快捷键与对象 z 轴顺序命令相同,但增加了
。 -
最后,图层 . . . 命令 (
) 打开图层对话框 (4.6.4 图层对话框)。
4.6.3 当前图层指示器
Inkscape 有两个主要的 UI 控件用于处理图层:状态栏中的基本当前图层指示器和更强大的图层对话框。
当前图层指示器显示当前图层的名称,并且通过左侧的两个切换按钮,指示该图层是否被隐藏(眼睛按钮)和/或锁定(锁按钮):

Figure 4-8. 状态栏中的当前图层指示器
它是一个交互式控件,而不仅仅是显示;你可以切换按钮并使用所有图层的弹出菜单来切换当前图层:

Figure 4-9. 文档中所有图层的弹出菜单
在图层菜单中,当前图层以粗体和项目符号标记。被锁定的图层名称周围有方括号(例如,[图层 1]);隐藏图层的名称为灰色。临时图层(如你进入的组)使用斜体来显示其名称。
4.6.4 图层对话框
当前图层指示器的优点是它始终处于活动状态,并且占用的屏幕空间非常小。然而,它仅适用于图层结构小且简单的场合。在更复杂的文档中,它很快就会变得难以管理。这时你应该查看图层对话框(
),如图 4-10 所示。
在图层列表中,可以通过点击三角形标记来展开和折叠图层内的子图层分支。此外,在这里你可以通过点击图层名称左侧的相应图标来锁定或解锁图层,以及隐藏或显示图层,而无需将其设置为当前图层。
AI
与 Adobe Illustrator 不同,Inkscape 的图层对话框尚不能显示图层内的单个对象。在一定程度上,你可以使用 XML 编辑器(4.7 XML 编辑器)来查看文档的整个树结构,包括所有图层和对象。
在图层列表下方,六个按钮对应以下命令,从左到右:创建新图层(需要输入名称),将当前图层提升到顶部,提升当前图层,降低下图层,将当前图层降低到底部,以及删除当前图层。你还可以通过在列表中点击图层名称并输入新名称来重命名图层。

Figure 4-10. 图层对话框
通过右键点击图层名称,将打开一个弹出菜单,包含添加、重命名、降低或提升,以及复制图层的命令。显示/隐藏其他图层命令切换除当前图层之外的所有图层的可见和隐藏状态。
在对话框的底部,有一个可以应用于整个当前图层的混合模式列表(有关混合模式的更多信息,请参见17.2 混合模式)和一个滑块控件来设置当前图层的透明度。这种透明度会影响图层中的所有对象,并且与组透明度(4.5.1 分组的用途)的工作方式相同;它提供了一个方便的方法,通过使图层几乎透明但又不完全隐藏,来查看图层下面的内容。
4.7 XML 编辑器
XML 编辑器是 Inkscape 区别于其他矢量编辑器的特点。在这里,你可以看到你文档的整个原始源代码,没有任何隐藏或(错误)解释。简单来说,如果在 XML 编辑器中看不到的东西,那么它就不在你的文档中。
如果你想要学习 SVG 或者只是对文档中某些对象或属性的底层内容感兴趣,XML 编辑器是你的主要工具。在这里,你可以对你的文档做任何事情。有人可能会声称 XML 编辑器是程序中唯一必需的部分,其他所有东西都只是可选的便利性!
XML 编辑器与程序的其他部分完全同步。你在 XML 树中做的任何更改都会立即反映在你的画布上,而你用任何其他工具做的任何更改都会立即在 XML 编辑器中以元素或属性更改的形式显示出来。

图 4-11. XML 编辑器的三个面板
XML 编辑器有三个主要面板,如图图 4-11 所示。底部还有一个自己的状态栏,显示各种状态信息和提示。
左侧面板
-
显示你正在编辑的文档的整个树结构。树中的每个节点(列表中的每一行)要么是一个 XML 元素,要么是一个文本节点。在 SVG 中,文本节点仅用于存储文本对象的文本内容;所有其他对象都是元素节点。例如,
svg:rect是一个矩形,svg:g是一个组或一个图层(在这里,svg是命名空间前缀;参见A.2 词汇表和命名空间)。列表中的每个元素并不都是对象;有些元素代表的是你无法在画布上看到的东西(例如元数据)。有关各种 SVG 和 Inkscape 元素的更多信息,请参阅附录 A。
注意
在 XML 编辑器中,所有元素都按照文档顺序列出:在画布上 z 轴顺序中最顶层的对象和图层是列表中的最后*。特别是,这意味着 XML 编辑器中图层的顺序与图层对话框或当前图层指示器中的顺序相反。
在文档树中,您可以点击任何元素来选择它。列表中的此选择与 Inkscape 中的常规对象选择同步:如果所选元素对应于可见对象,则该对象在画布上被选中;反之,如果您在画布上选择一个对象,XML 树面板会滚动到相应的元素并突出显示它。这是访问其他方式无法访问的元素的一种方法,例如那些被锁定或隐藏的元素(4.1 对象属性)。
在树面板上方,有一个带有用于通用 XML 操作按钮的小型工具栏:创建新元素或文本节点以及复制或删除所选节点。最后四个按钮用于在树中移动所选节点(及其所有子节点):上箭头或下箭头重新排序节点(您也可以通过用鼠标拖动所选节点来完成此操作),而左箭头和右箭头则改变它们的嵌套。例如,要将节点从其父节点的子节点转换为兄弟节点,请点击左箭头按钮;相反,右箭头按钮将节点转换为前一个兄弟节点的子节点。
右上角面板
- 显示所选元素节点的所有属性。(如果您选择的是文本节点而不是元素节点,则此面板将允许您编辑节点的文本。)每个属性都有一个名称和值,它们在表格的两个列中列出。在 XML 中,属性的顺序无关紧要,因此对话框按字母顺序显示它们。面板上方有一个按钮用于删除所选属性。
右下角面板
-
允许您在右上角面板中编辑所选属性。它包括一个用于属性名称的单行字段,一个用于其值的较大面板,以及一个设置按钮(在完成编辑后,您可以按
而不是点击设置)。您可以通过编辑名称和值字段来向元素添加新属性。如果您输入的属性名称与现有属性匹配,则该属性将用您的值替换;否则,将创建一个新属性并将其添加到元素中。
注意,值编辑面板会自动换行长属性值以方便编辑。这在编辑
style属性时尤其有用,因为它们的值往往相当长(A.8 样式)。
第五章.选择
在 Inkscape 中,如果不先选择某些对象,您能做的事情非常有限。在所有 Inkscape 操作中,选择具有最多的方法、工具、对话框和快捷键。您需要了解其中很大一部分才能高效工作,并且至少需要了解其中的一些才能在 Inkscape 中工作。
仅通过选择或取消选择对象本身不会以任何方式更改文档。因此,本章中描述的所有技术都不是可撤销的操作,也不需要保存文档。
5.1 选择提示
如您现在可能所知,Inkscape 的选择只是一个对象列表,可能包括任何东西——从没有对象(空选择,没有选择)到文档中的所有对象。选择是局部的;如果您打开一个包含相同文档的第二个窗口(3.5 实例、文档、视图),则该窗口将有自己的独立选择对象列表。选定的对象可以位于画布的任何位置,在任何层或组中;多个选定的对象不必是同一父级的子项。唯一不能做的事情是同时选择一个对象及其祖先(5.10 组中选择)。
注意
即使隐藏或锁定的对象也可以包含在选择中。虽然大多数工具会拒绝直接选择隐藏或锁定的对象,但仍然可以通过例如使用 XML 编辑器(4.7 XML 编辑器)来实现。
在画布上,每个选定的对象都由选择提示标记。默认情况下,此提示是围绕对象的虚线框架,显示该对象的边界框(4.2 边界框)。此框架使用对比颜色绘制在所有对象之上,因此在任何背景上都是可见的。
您可以选择不同的选择提示:每个对象边界框的左上角的一个小菱形标记,如图 图 5-1 所示(这与 Xara 矢量编辑器使用的类似)。要更改选择提示的类型或完全关闭它,请转到 工具 ▸ 选择器 子页的 Inkscape 首选项 对话框。

图 5-1.两种可能的选择提示
此外,你可以控制哪些工具显示选择提示,哪些不显示。为此,请在 Inkscape 预设 对话框中每个工具页面上寻找标记为 显示选择提示 的复选框。默认情况下,每个工具都显示选择提示,除了书法笔和油漆桶工具,它们更偏向艺术而非技术——在那里,提示并不很有用,可能还会分散注意力。(当然,无论提示是否显示,选择都在那里——无论你切换多少工具,它都保持不变。)
5.2 选择和状态栏
当你选择或取消选择对象时,在整个程序中会发生很多事情。Inkscape 会立即将所有注意力转向新的选择:它会重新绘制选择提示,如果需要,滚动画布以显示选中的对象(3.10 滚动),并更新界面上的各种显示和指示器。
Inkscape 中最重要的提示来源之一,状态栏,会尽可能多地显示关于选中的信息。对于一个选中的对象,它会告诉你对象的类型,某些类型的一些附加属性(例如路径的节点数量、文本的字体家族和大小),以及该对象所在的图层,如图 图 5-2 所示。

图 5-2. 单个选中对象的工具栏描述
对于多个选择,Inkscape 会告诉你选中了多少个对象,如果选中的对象类型不超过三种,则会列出这些类型:

图 5-3. 多个选中对象的工具栏描述
如果对象类型太多无法列出,并且它们位于多个图层中,Inkscape 只会显示对象的数量、对象类型和图层数量:

图 5-4. 多个图层中多个类型选中对象的工具栏描述
在状态栏消息区域的左侧是当前图层指示器(4.6.3 当前图层指示器)。由于选中的对象可以位于多个图层中,因此此小部件并不直接与选择相关联。然而,当你通过点击选择一个对象时,Inkscape 假设你现在想要在该对象的图层中工作,因此它会将该图层设置为当前图层,指示器会反映这一点。
更左侧的是所选样式指示器,它始终反映当前选择的样式(如果选择了具有不同样式的多个对象,它显示它们的平均样式)。我们将在8.1 样式基础中详细讨论这个重要的控件。
5.3 子选择
一些工具允许更细粒度的选择类型,这样它们就可以处理所选对象的某个部分而不是整个对象。这个所选对象的某部分就称为子选择。
一个例子是文本工具。你可以选择整个文本对象,但然后你可以通过按
和箭头键或通过像在文本编辑器中一样拖动鼠标来选择该文本对象中的片段。所选的文本部分就是文本子选择。
另一个例子是渐变工具。渐变可以有许多停止点(10.5 多级渐变),并且该工具可以一次选择一个或多个这些停止点。自然地,渐变停止点仅在所选对象可见,所以如果你选择一个停止点,你就在常规对象选择中创建了一个子选择。
当你更改子选择时,Inkscape 中许多操作与更改选择时的操作相同。也许最重要的是,状态栏中的所选样式指示器(8.1 样式基础)显示子选择的样式——即所选文本片段的样式,而不是整个文本,或者所选渐变停止点的样式,而不是整个对象。此外,任何样式设置命令(例如在调色板上点击颜色,或通过按
来粘贴样式)如果存在,将应用于子选择。换句话说,子选择允许你几乎像处理独立对象一样处理对象的各个部分。
5.4 通过点击选择:选择器
很可能你已经知道工具栏中最上面的工具是选择器,并且使用该工具点击一个对象可以选择该对象。当然,选择器工具的功能远不止这些,但让我们更详细地看看这个简单的动作。
首先,请注意点击一个对象会取消选择任何之前的选中项。此外,观察使用选择器工具时,你不仅可以选择对象,还可以在任何方向上拖动所选对象。这两个功能的结合使得移动对象变得极其容易和自然,几乎不需要考虑“选择”本身:你看到一个对象,然后点击并拖动它到你想要的位置。点击会选中它,取消选择其他任何对象,拖动则会移动它。
有时,这可能会造成不便。特别是如果你使用的是带有笔而不是鼠标的平板电脑,你可能会发现,当你只是想通过点击来选择对象时,意外推动对象的情况太容易发生了。为了减少这个问题,请转到 Inkscape 预设 对话框的 鼠标 选项卡,并调整 点击/拖动阈值 的值。这设置了允许的屏幕像素“滑动”量,默认值为 4;如果你通过少于这个像素数的像素点击并拖动对象,你的操作仍然被视为点击,对象不会移动。如果你经常意外地移动对象而不是点击它们,请增加此值;相反,如果你发现对象在你真正想要移动它们时“粘性”太强,请减少此值。
在你点击任何东西之前,然而,你想要确保你点击的是正确的位置,这样你的点击就不会白费。在这里,Inkscape 非常有用:当你鼠标悬停在对象的可点击区域上时,它会改变鼠标光标,与光标在空白画布上时是一个箭头相反。悬停在对象上的光标形状在不同平台上是不同的;例如,在 Ubuntu Linux 上它看起来像一只手,而在 Windows 上它看起来像两端带有箭头的十字。
稍微玩一下这个光标改变功能。你会发现没有填充的对象不能通过在它们内部点击来选择,并且完全透明的对象根本不能通过点击来选择(尽管你可以用橡皮筋选择它们,如你将在下一节中看到的)。在轮廓模式(3.11 渲染模式)中,你只能通过点击对象的轮廓来选择任何对象。
如你所想,这种变化的鼠标光标在复杂的绘图中的帮助较小,因为整个画布通常被对象覆盖。然而,如果你将所有背景对象分离到一个图层并将该图层锁定(4.6 图层),那么这些现在不可选的背景对象将停止改变光标,并且你可以通过将鼠标移到它们上方再次感知前景对象。
此外,你还会注意到每个可点击对象在所有边上都有一个不可见的边距,宽度为几个像素。在这个边距上的点击仍然会选择该对象。这对于选择其他方式几乎不可能准确点击的小对象来说非常方便。然而,从另一方面来看,这也解释了为什么有时很难选择堆叠中的底部对象,即使那个底部对象从顶部对象下面略微突出。
如果你不喜欢这个可点击边距的大小,你可以在Inkscape 首选项对话框的鼠标选项卡中更改它:调整抓取灵敏度值,默认为 8 个屏幕像素。请注意,这个值和点击/拖动阈值都是以屏幕像素为单位的。这意味着它们不依赖于缩放,所以即使值保持不变,你会发现通过放大来执行小范围移动和选择小对象要容易得多。
5.5 通过点击选择:其他工具
Inkscape 用户界面最重要的原则之一是一致性:除非有其他原因,否则所有工具和模式必须表现相同。在选择时,这意味着许多工具,就像选择器一样,可以通过点击来选择对象。
可以通过点击来选择对象的工具有:节点(12.5 节点工具)、所有形状工具(第十一章)和渐变(10.1 渐变工具**)。(不能通过点击来选择工具的原因是不同的:在这些工具中,单次点击被保留用于每个工具的特定功能。)
与选择器不同,所有这些工具都直接选择单个对象,即使它们在组内(换句话说,在这些工具中,简单的点击等同于选择器中的
-点击,见5.10 组内选择)。这很有道理:所有这些工具都针对各种类型的单个对象工作,所以在大多数情况下选择一个组并不是你真正想要做的。例如,如果你用节点工具选择一个组,你就无法对它做任何有用的事情——组没有路径节点可以编辑。这就是为什么这个工具总是直接选择你点击的路径,无论它是否与其他任何内容组合在一起。
此外,与选择器不同,其他工具不会改变可选择对象上的光标。唯一的例外是文本工具,当它悬停在可编辑文本对象上时,会切换到文本插入光标(15.1 基本编辑)。
5.6 向选择中添加
一个选择可以包含多个对象。有时,你可能已经花费了一些精力选择了几个对象,然后你还想选择其他几个对象。你能否在不重新开始选择的情况下做到这一点?
是的。要添加当前选择中的另一个对象,
-点击它。然而,如果你
-点击一个已经选中的对象,它将从选择中移除。换句话说,这个快捷键就像一个切换器,它会反转你点击的对象的选择状态。
5.7 使用橡皮筋选择
在选择器中,另一种选择多个对象的方法是通过拖动它们。想象一个围绕所有你想要选择的对象的矩形,并从该矩形的对角线一端拖动到另一端。(拖动的确切方向——例如从左上角到右下角与从右上角到左下角——并不重要。)这个在你拖动时可见的矩形(如图图 5-5 所示),被称为橡皮筋或标记。

图 5-5. 使用橡皮筋(鼠标拖动)选择多个对象
使用橡皮筋选择不是切换;一旦你开始一个新的橡皮筋,任何之前的选中都会取消选中。这就是为什么逻辑上,在空白空间(不是对象)上单击一次会取消选中任何东西——这只是一个零大小的橡皮筋,它会取消旧的选择但不会创建一个新的选择。
橡皮筋选择所有可见和未锁定层中的封闭对象——换句话说,在整个文档的 z 轴堆叠中,而不仅仅是当前层。(因此,使用橡皮筋选择不会改变当前层,即使它导致在不同于当前层的层中选中单个对象。)此外,橡皮筋允许你选择那些仅通过点击无法选择的对象——那些位于其他对象之下、没有填充和描边以及那些完全透明(不透明度为零)的对象。然而,隐藏或锁定(4.1 对象属性)的对象仍然无法被选中。
简而言之,如果对象的边界框完全位于橡皮筋矩形内,并且该对象是可选择的,它将被选中。
AI
在 Adobe Illustrator 中,橡皮筋的工作方式略有不同:它选择所有边界框位于其矩形内或与之相交的对象。Inkscape 的行为,只选择完全在橡皮筋内的对象,与 CorelDRAW 和 Xara 矢量编辑器共享。Inkscape 可以通过触摸选择来更接近 AI-like 的行为,如下一节所述。*
你可能会认为,像点击一样,按住
键并拖动橡皮筋会给你切换行为。但这并不是事实。按住
并使用选择工具拖动与简单拖动完全一样,只有一个例外:它始终创建一个橡皮筋,即使你从一个对象而不是从空白画布开始。没有
,从对象拖动将简单地选择并移动该对象,但按住
并拖动强制橡皮筋,从而使它在复杂绘图中非常有用,因为在复杂绘图中空白画布可能很难找到。
5.8 触摸选择
触摸选择是橡皮筋选择的近亲。使用选择工具时,如果你按住
键从空白画布拖动,而不是看到矩形,你会看到鼠标光标留下的红色轨迹——触摸路径。在你释放鼠标后,所有被这条路径触摸(但不包括在内)的对象都将被选中,如图图 5-6:在你释放鼠标后将被选中的对象用较深的灰色标记")所示。

图 5-6. 使用触摸选择 (
-拖动):在你释放鼠标后将被选中的对象用较深的灰色标记。
因此,你可以直接“绘制”覆盖你想要选择的对象,这在许多对象紧凑地排列但它们的边界框太大或与其他对象的边界框过于交织的情况下非常方便。
与常规橡皮筋选择不同,触摸选择不会选择完全透明的对象或被其他对象遮挡的对象——也就是说,那些你实际上无法“触摸”的对象。事实上,触摸选择的行为就像一系列沿着触摸路径的
-点击,其中每个被触摸的对象都会收到这样一个点击。
注意,如果有选择,!-拖动有不同的功能:它无论你拖动到何处都会移动选择(6.1 选择器:移动)。但如果你已经有一些选择,并想通过触摸选择来添加到它,请使用!-拖动:就像!即使从对象开始也会强制橡皮筋一样,触摸选择即使你有先前的选择也会强制触摸路径。然后,触摸到的对象将被添加到选择中。
如果你触摸对象以便随后删除它们,橡皮擦工具的删除模式会同时执行这两个功能:拖动鼠标覆盖对象,并在释放鼠标时将其删除。如果你想要将此功能作为一个独立的工具使用而不必按住!。
5.9 从下方选择对象
在复杂图形中选择对象时最常见的问题之一是某些对象遮挡了其他对象。即使顶部对象部分透明并且你可以看到下面的另一个对象,简单地点击它仍然会选择顶部对象。
如果底部对象的边界框比顶部对象的小,你可以!-拖动一个橡皮筋围绕小的底部对象,这将选择它而不选择顶部对象。然而,这并不总是可能的。
Inkscape 提供了一种方便的方法来选择不在 z 调序最顶层上的对象:!-点击选择在当前选定的对象下方。这意味着!-点击的结果取决于当前的选择;如果没有选择,或者如果你!-点击当前选择之外,结果与简单地点击相同。
然而,如果你点击一个选定的对象并且下面有其他对象,!-点击将取消选中选定的对象,并选择下面的对象。接下来的!-点击将选择更深层的对象,依此类推。当你点击到点击点的最底层对象时,接下来的!-点击再次选择最顶层的对象。
例如,假设你有三个堆叠的对象,从下到上编号为 1, 2, 3。在没有选择的情况下,
-点击它们会选择最上面的一个,3。下一个
-点击会选择 2,然后是 1,然后又是 3,以此类推。
-点击与
-点击的不同之处,与
-点击与简单点击的不同之处相同:它在不完全取消选择的情况下添加到选择中或从其中移除。因此,在我们的 1, 2, 3 对象堆栈中,第一次
-点击选择 3;再次
-点击后,将选择 2 和 3;最后,再次
-点击会将最底部的对象也添加到选择中——因此,经过三次
-点击后,将选择所有 1, 2 和 3。
5.10 在组中选择
当您需要将一组对象作为一个整体处理时,分组是一件美妙的事情。如果您使用选择工具简单地点击组中的任何对象,整个组都会被选择。然而,很多时候您想要选择并编辑组内的对象而不取消其分组。这可以通过
-点击组中的对象来实现。
-点击完全忽略 任何 分组,无论其深度如何。例如,如果对象 A 是组 B 的成员,而组 B 又是顶级组 C 的成员,那么
-点击 A 将选择 A,直接穿过两个分组级别。无法通过
-点击选择组 B;它总是只选择最低级别的非分组对象。
选择组 B(它位于组 C 内部)的唯一方法是 进入 组 C(见 4.6.1 层次)。进入 C 使其成为一个临时层。一旦进入该层,您只需点击即可选择 B。
-点击可以与
(选择下) 结合使用。从逻辑上讲,
-点击与
-点击做同样的事情,只不过它忽略了任何分组,并在点击点浏览对象的 z-顺序堆栈,就像它们都没有分组一样。
同样,-点击可以与 结合使用,以将对象添加到选择中或从选择中移除。最后,你可以-点击,这意味着“将 z-order 堆栈中此点的最顶层未选中对象添加到选择中,忽略分组;如果此点所有对象都已选中,则取消选中最顶层的一个。”
使用各种修饰符点击进行选择的功能的唯一限制是:你不能同时选择一个对象和包含该对象的组。所以,例如,如果你在组内点击一个对象()然后点击(没有 !)同一组的另一个对象,试图将组添加到选择中,那么组将被选中,但第一个选中的对象将被取消选中。同时选择一个组和组内对象的情况会导致各种逻辑上的困境,因此 Inkscape 尽力防止这种情况发生。
5.11 使用键盘快捷键选择
通常,选择是一个鼠标或笔的任务,因为在大多数情况下,它通过在屏幕上指示一些点或区域来完成。然而,也可以使用键盘快捷键进行两种非常常见的选择操作:选择下一个或上一个对象( 或 )以及选择所有对象()。
下一个和上一个的概念实际上是指文档内对象的 z-order(见4.3 Z-Order)。当你按下 时,你选择 z-order 中当前选中对象立即上方的对象(或者如果选中了多个对象,则是上方最顶部的对象)。相应地, 选择(底部)选中对象的立即下方的对象。
如果没有选择任何对象, 选择当前图层中最底部的对象,而 选择最顶部的对象。由于对象通常被添加到当前图层的 z-order 顶部,因此如果没有先前的选择,按下 是选择最近添加(绘制、粘贴、导入等)对象的便捷快捷键。
这些三个快捷键的一些行为方面可以在Inkscape 首选项对话框的选择选项卡中更改:

图 5-7. Inkscape 首选项对话框的“选择”选项卡
-
默认情况下,这些键仅限于当前图层(这可能是一个您已进入的组,4.6.1 图层层次结构)。也就是说,一旦您通过按
到达图层的最顶层对象,接下来您将回到同一图层的最底层对象,按
将仅选择当前图层中的所有对象。在对话框中,这种行为被描述为仅在选择当前图层内。在另外两个选项中,在选择当前图层和子图层中与它的工作方式相同,除了它进入当前图层的子图层(4.6.1 图层层次结构),而在选择所有图层中允许
或
跨越图层的界限,而
将选择整个文档中的所有对象。 -
两个复选框,忽略隐藏和包括锁定对象和图层,可以取消选中以允许键盘快捷键选择那些隐藏或锁定的对象,或者如果您还选择了在所有图层中选择,则位于隐藏或锁定图层中(4.6 图层)。
5.12 查找对象
在复杂文档中搜索对象是您可能需要执行的操作——但是当您需要它时,您会为 Inkscape 能够做到这一点而感到高兴。本章节关于选择的内容是讨论对象搜索的最佳位置,因为它本质上又是选择对象的一种方式。
搜索的主要方式是使用查找对话框(图 5-8),您可以通过按
或选择编辑 ▸ 查找来调用它。

图 5-8. 查找对话框
您可以通过在以下字段中输入查询来搜索,具体描述如下。如果您为多个搜索字段指定了值,它们将使用逻辑“与”组合——也就是说,只有满足所有指定条件的对象才会被找到。
文本
- 此字段仅适用于文本对象(第十五章),并在其文本内容中进行搜索。搜索区分大小写。如果有对象的文本与查询字符串完全对应,则仅选择那些对象;否则,Inkscape 会尝试找到部分匹配——即那些内容包含查询字符串的文本对象。
ID
- 这在所有对象的
id属性中进行搜索(A.9 链接)。这仅在您的某些 ID 有意义时才有意义,也就是说,是由您设置的,而不是由 Inkscape 自动生成的。与文本一样,Inkscape 首先尝试找到精确匹配,如果失败,则查找部分匹配。
样式
- 此字段允许您在对象的样式中进行搜索。遗憾的是,由于这是一个简单的文本字段,要使用此功能,您至少需要了解一些 SVG 中样式是如何编写的(见 A.8 样式)。以下是一些示例:
查找所有填充红色的对象
- 这只适用于一种特定的红色,您必须知道如何将其转换为 RRGGBB 形式。例如,调色板中的“亮红色”在 RRGGBB 表示法中为
ff0000,在对象的样式字符串中,这由一个井号 (#) 和属性名fill分隔,后者由冒号分隔。因此,整个搜索字符串将是fill:#ff0000。
查找所有没有描边或填充的对象
- 搜索
stroke:none或fill:none。
查找所有完全透明的对象
- 搜索
opacity:0;(注意末尾的分号分隔符;如果没有它,它也会找到所有 部分 透明的对象——例如,那些在它们的样式中有opacity:0.5;的对象)。
属性
- 此字段搜索在 SVG 中具有此 名称 属性的对象(无论其值如何)。例如,所有使用选择导出导出为位图的对象都获得属性
inkscape:export-filename,该属性存储位图导出文件的文件名。因此,搜索此属性将选择文档中所有曾经导出的对象(之后您可以,例如,再次将它们全部导出,见 18.9 位图导出)。
类型
-
这允许您搜索特定类型的对象。取消选中 所有类型 复选框将打开一个与各种对象类型对应的复选框列:
![在查找对话框中选择对象类型]()
图 5-9. 在查找对话框中选择对象类型
仅保留您想要查找的类型。您可以将其与其他上述搜索条件结合使用。
除了搜索字段外,对话框底部的四个复选框启用了各种搜索选项:
在选区中搜索
- 这允许您缩小当前选择,而不是搜索整个文档。
在当前层搜索
- 默认情况下,Inkscape 在所有层中进行搜索。勾选此选项将搜索限制在当前层。
包括隐藏和包括锁定
- 默认情况下,Inkscape 的搜索忽略隐藏和锁定对象,以及隐藏或锁定层中的对象。勾选这些选项以在隐藏和/或锁定对象中进行搜索。
5.13 跟踪链接
正如你将在以下章节中看到的那样,Inkscape 中的对象可以通过各种方式相互链接。你通常会想跟随这样的链接来找到与当前选中对象链接的对象。Inkscape 有一个通用的键盘快捷键来执行此操作,
。根据选中的对象类型,按
将选择:
-
如果选择了克隆副本(16.4 链接克隆)
-
选中文本路径对象所附加的路径(15.2.3 文本路径)
-
选中链接偏移对象所附加的路径(12.4 偏移)
记住,一些文档对象可能存储在defs中(见A.4 Defs、视图和元数据),在这种情况下,它们可以从文档中引用,但在画布上的任何地方都是不可见的。如果你的屏幕克隆、文本路径或链接偏移量引用了defs中的对象,
将失败,并在状态栏中显示错误消息。
5.14 取消选择
在几乎任何工具、上下文或模式下,按
将取消当前选择。如果你有一个子选择,通常按一次
将取消子选择,第二次按
将取消常规选择。
另一种取消选择的方法是单击空白画布(或没有任何东西在其下面的锁定对象)。然而,这仅在选择器和那些简单点击即可选择对象的工具中有效(5.5 通过点击选择:其他工具)。在复杂的绘图中,如果难以访问空白画布,
是取消选择的最方便方式。
此外,Inkscape 默认情况下在切换当前图层时会取消选择(见4.6 图层)。这可以在Inkscape 首选项对话框的选择选项卡中禁用。
5.15 选择杂项
当你撤销一个操作时,有时(但不总是)当前选择会被取消选择。 (是否发生取决于你正在撤销的操作类型。) 这不是预期的行为;实际上这是一个错误,Inkscape 的未来版本可能会修复它。
另一个类似的问题是,在运行扩展(13.3 路径扩展)之后,选择通常会丢失。此外,如果扩展打开了一个配置对话框,并且在这个对话框中,你勾选了实时预览复选框,那么在对话框打开期间,你无法更改选择(或在画布上做其他任何事情)。
Inkscape 强大的命令行界面有一个用于选择对象的特殊参数,--select(C.5 动词)。要使用它,你需要知道你想要选择的对象的 ID。这使得能够编写完全自动化的 Inkscape 编辑会话脚本,其中单个命令可以加载文档、选择一些对象、对它们执行一些操作、保存文档,并退出——这一切都不需要任何用户交互。
第六章. 变换
在 Inkscape 中,变换有一个相当狭窄的含义。尽管这个词可能意味着,但它并不指代任何对象的改变,而只是指影响整个对象四种简单操作:移动、缩放、旋转和倾斜。其他任何东西都不是变换。
比喻来说,变换对象就像在你家里移动家具,而不需要重新粉刷墙壁或打开任何柜子。
SVG
应用到对象上的变换通常(但不总是)存储为 SVG 中的 transform 属性;有关何时写入以及相关的首选项设置,请参阅A.7 变换。
6.1 选择器:移动
在选择对象之后,变换它们是选择器工具的第二大重要功能。在所有变换类型中,移动是最简单的:只需抓住一个对象(如果它尚未被选中,点击会选中它;你只需处于对象的点击区域内即可实现这一功能)并拖动。
这种自由拖动既简单又富有启发性;你通常会在工作的早期阶段使用它,那时你需要移动很多东西以找到最佳的整体构图。(注意:与许多其他矢量编辑器不同,Inkscape 在实时中移动对象本身,而不仅仅是它的轮廓或框架。)
在你工作的后期阶段,你将更频繁地需要约束拖动。最常见的是水平或垂直拖动,同时按下
。当你按下并保持
拖动时,Inkscape 创建两条不可见的“轨道”,一条水平,一条垂直,它们在拖动开始的位置相交。然后选择可以沿着这些轨道移动,根据哪个更近跳到另一个:

图 6-1. 使用
的约束拖动
在许多其他情况下也有约束动作的一般含义。在这方面,Inkscape 与通常使用
达到类似目的的 Adobe 应用程序不同。通过对齐,还有更多方式可以约束对象移动,我们将在下一章中讨论。
如您从上一章所知,有时仅选择所需的物体可能很困难;特别是,您可能必须使用
-点击(选择下)和
-点击(按组选择)来获取所需的物体。现在,如果您想拖动这些选定的物体,您可能会遇到问题:任何拖动都始于一个点击,而这个点击可能会非常容易地破坏您精心构建的选择,通过选择其他物体——比如位于您物体上面的物体,或者包含这些物体的组。
在许多情况下,解决这个问题最简单的办法是使用箭头键移动选择,而不是用鼠标拖动(6.5 使用键盘快捷键进行变换)。然而,如果您在开始拖动时按下
键,您也可以使用鼠标拖动。这允许您从任何点拖动当前选择,不仅是从选择本身,也可以从空白画布或任何其他物体。
您可能会想知道这种
-拖动如何与
-点击兼容,后者确实通过“选择下”的方式改变选择。解决方案很简单:与常规的点击选择不同,“选择下”并不是在您点击鼠标按钮时发生,而是在点击后释放鼠标按钮时发生;如果在点击和释放之间,您没有移动鼠标超过点击/拖动阈值(5.4 通过点击选择:选择工具,默认为 4 屏幕像素),这被视为一个点击,并且执行“选择下”。否则,当前选择将被移动。
6.2 选择工具:缩放
现在我们来看一个更复杂的问题:缩放选择,或者将其放大或缩小。这不同于缩放;当您缩放时,您只是从更近或更远的距离查看您的绘图,而不会以任何方式改变它。缩放意味着实际调整对象的大小;这是一个不可撤销的操作。
为了缩放您的选择,选择工具会显示八个把手,四个位于选择框的角落,另外四个位于选择框的边缘。拖动边缘把手可以在一个方向上(水平或垂直)缩放选择;拖动角落把手可以在两个方向上缩放:

图 6-2. 使用选择工具进行缩放
默认情况下,角落把手可以在任何方向上自由移动。这意味着在一般情况下,所选对象的宽高比(也称为宽高比)将不会得到保留。你可以拉伸或挤压你的选择,甚至可以在单次拖动中使其变高和变窄,或者变低和变宽。侧把手也不会保留宽高比,因为它们只在单一维度上缩放。
锁定宽高比的最简单方法是按下
。这会使角落和侧把手都按比例缩放。另一种实现方法是点击画布上方的选择器控制栏中的锁定切换按钮,位于可编辑的W和H字段之间:

图 6-3. 选择器控制栏中的宽高比锁定
当这个锁定处于开启状态(按下时),角落把手总是按比例缩放。然而,侧把手不受锁定影响,仍然只在单一维度上缩放。
通常,缩放工作方式是,选择的边界框的相对面(对于侧把手)或相对角(对于角落把手)保持固定。有时,你可能希望选择的中心保持固定,以便它从中心对称缩放。这正是
所做到的。请注意,在任何缩放过程中,固定点总是通过一个十字标记来可视化:

图 6-4. 使用
缩放选择中心
注意
这里有一个有用的记忆法:在输入文本时,按下
*会使字母变大(即,大写);在缩放时,它也会使结果比没有
时大两倍(因为它在中心点的两侧进行缩放)。
你可以像下面6.4 旋转中心中描述的那样,将缩放中心移动到任何位置。
剩余的修饰符
在缩放过程中也扮演着角色。它允许你通过整数倍数缩放选择:增加到原始大小的 2 倍、3 倍、4 倍等,或者减少到原始大小的 1/2、1/3、1/4 等。
可以与
结合来锁定宽高比,或者与
结合来围绕选择中心的中心点缩放。
6.3 选择器:旋转和倾斜
“我如何旋转对象?”这个问题在 Inkscape 用户论坛和邮件列表上非常常见。要旋转选择,您需要将选择工具切换到旋转模式,这里有一个关于如何进行切换的小秘密:通过选择上的第二次点击。(注意,这必须是一个明显的第二次点击,而不是快速的双击。)第三次点击将选择工具切换回缩放模式,第四次将其返回到旋转模式,依此类推:

图 6-5. 选择工具的缩放和旋转模式
AI
Inkscape 并非发明了这个功能;单独的选择模式是从 CorelDRAW 和 Xara 矢量编辑器中借用的。不出所料,大多数对这个约定有问题的用户都习惯了 Adobe Illustrator。
第二次点击有一个问题:就像移动一样,有时可能无法在不选择其他内容的情况下点击选择(例如,如果选定的对象在组中或位于其他对象之下)。在这些情况下,只需按
即可切换到旋转模式或返回。
一旦您处于旋转模式,旋转选择就像拖动角手柄一样简单。拖动侧面手柄会倾斜选择。
当旋转时,
将旋转角度限制为等距角度增量,默认每 15 度:

图 6-6. 受
限制的旋转
这个限制角度可以在Inkscape 首选项对话框的步骤选项卡中更改(旋转捕捉每下拉菜单)。您可以从 0.5 度到 90 度之间的许多值中选择一个。
使用
倾斜同样遵守相同的限制角度:

图 6-7. 受
限制的倾斜
-旋转临时将旋转中心移动到被拖动的角手柄相对的边界框角。
6.4 旋转中心
当您将选择工具切换到旋转模式时,您将在选定对象或对象的中心看到一个十字标记。这是旋转中心。这个点对每个对象都是记忆的,并且是其永久属性之一;移动任何对象的中心是不可撤销的操作,并且当您保存文档时,所有对象的旋转中心都会与其一起保存。缩放、旋转或倾斜都是围绕这个点进行的,不仅是在选择工具中,而且在大多数其他地方也是如此(例如在变换对话框或通过键盘快捷键变换时)。
默认情况下,旋转中心位于对象的边界框的几何中心。使用选择工具,你可以自由地将其拖动到任何位置(在对象内部或外部)。在拖动过程中,中心会自动对齐到对象的边界框的边缘,到几何中心(其原始位置),以及通过几何中心的水平和垂直轴。这使得快速将旋转中心对齐回默认位置或边界框的角落变得容易。使用
拖动以抑制对齐;使用
拖动以限制其水平/垂直移动。
如果你通过任何方式移动对象(不仅仅是通过选择工具拖动),其旋转中心也会随之移动,因此它始终保持在对象相同的相对位置。不幸的是,目前还没有办法使用键盘移动对象的旋转中心——你只能通过鼠标拖动来操作它。
当选择了一个以上的对象时,整个选择也有一个旋转中心,那就是第一个被选择的对象的旋转中心(如果你是一个接一个地选择对象,通过使用
-点击)或者最接近 z 轴底部的对象(如果你是通过橡皮筋或通过
选择)。如果第一个或最底部的对象曾经将其旋转中心从默认位置移动开,整个选择将具有与该对象相同的旋转中心;否则,选择的旋转中心将位于默认位置——在选择的边界框的几何中心。
此外,如果你在选择了多个对象后拖动选择旋转中心,这将应用于所有选中的对象:每个对象都将拥有这个新的旋转中心位置。例如,如果你用多个辐条画一个轮子,你可以选择所有辐条,只需将旋转中心移动到轮子的中心一次。之后,即使你只选择一个辐条,它也会方便地围绕轮子的中心旋转。
此外,当你复制或克隆(16.1 创建克隆)对象时,旋转中心也会被继承。例如,你可以画一个单独的辐条,将其旋转中心移动到轮子的中心,然后复制(或克隆)那个辐条,并通过任何方法(通过使用选择工具拖动角手柄,通过键盘快捷键,或通过变换对话框)旋转副本。新的辐条将牢固地设置在轮子内部:

图 6-8. 使用旋转中心确保辐条属于轮子
6.5 使用键盘快捷键进行变换
通过拖动对象或其手柄在画布上变换对象是简单直观的,但不够精确(即使使用各种约束模式也是如此)并且有时可能会感觉相当笨拙。许多长期使用 Inkscape 的用户更喜欢使用键盘快捷键来完成大部分变换。
对象变换的键盘快捷键容易记忆,并且通常会使你的工作变得更加容易。学习这些键的另一个原因是,正如我们在本书的其余部分将看到的,它们在许多其他工具和上下文中被一致地使用来执行类似的功能——例如,使用节点工具变换节点,使用文本工具变换文本字符,或使用渐变工具变换渐变手柄。
注意
从键盘上倾斜是不可能的,这是可以理解的,因为这种操作并不经常使用。
6.5.1 移动
The
,
,
, 和
方向键移动选择区域。移动的距离取决于修饰符。
-
没有修饰符时,箭头键每次移动 2 像素(2 SVG 像素单位,而不是屏幕像素,A.6 坐标和单位)。这是默认值;你可以在 Inkscape 首选项 对话框的 步骤 选项卡中更改它。
-
使用
,箭头将选择区域移动 1 屏幕像素。这意味着实际距离取决于缩放级别,当你放大时可以进行更精细的移动,当你缩小视图时可以进行更粗糙的移动。这是最常见且最有用的快捷键之一,因为它具有精确性和适应性:使用它,你可以始终以当前缩放下仍然可察觉的最小距离移动选择区域。 -
使用
,箭头的移动距离是没有使用
时的 10 倍。因此,简单的
-箭头默认移动 20 像素,而
-箭头在当前缩放级别下移动 10 屏幕像素。
键盘移动命令的简便性和可预测性使它们在许多不同情况下都很有用。例如,有时我需要处理被某个大型前景物体遮挡的对象。
点击“选择下”可以工作,但通常太麻烦;将前景物体移动到新图层并隐藏该图层也是一个不错的选择,但更麻烦。在这种情况下,我通常会选中前景物体,并通过几个
或
按键将其移开(向右)。完成后,我会再次选中它,并通过相同数量的移动按键以相反方向精确地将其放回原位。(只需记住在这种情况下不要使用
-箭头,因为当你移动对象回来时,可能处于不同的缩放级别,这会影响距离。)同样的“移开再回来”技巧在分析复杂构图时很有用,当我试图找出画布的哪些部分对应哪些对象时。
6.5.2 缩放
和
按键(尖括号)分别用于缩小和放大选择区域。键盘缩放始终保持纵横比,并在对象的边界框的几何中心(而非可旋转的中心)进行缩放。同样,缩放量取决于修饰符。
-
没有修饰符的情况下,
和
按键以 2 像素(2 SVG 像素单位,而非屏幕像素)缩放。这个增量应用于两个维度中较大的那个;例如,如果对象比它高,其宽度增加 2 像素(边界框的左右边缘各移动 1 像素,方向相反),而其高度以成比例较小的量增加。默认值是 2 像素;您可以在Inkscape 首选项对话框的步骤选项卡中更改它。 -
使用
时,
和
按键以 2 屏幕像素缩放,因此在大尺寸的边界框中,边缘各移动 1 屏幕像素。与
-箭头一样,这意味着实际距离取决于缩放级别,当你放大时可以更精细地缩放,当你缩小时可以更粗糙地缩放。 -
对
和
键没有影响。这是因为在一些键盘上,你需要按下
才能输入这些字符。顺便说一句,
(逗号)和
(点)分别作为
和
使用,因为在许多键盘上它们是物理上相同的键。 -
使用
,
和
键以 2 倍的比例缩放——也就是说,它们使选择分别变为原来的一半和两倍。当你需要按大比例缩放时,这很方便;例如,先按
几次,以接近所需的大小,然后使用
或不带修饰符的相同键进行更精确的调整。
6.5.3 旋转和翻转
和
键(方括号)分别逆时针和顺时针旋转选择。旋转是在 Selector 的旋转模式下可见的可移动旋转中心周围进行的;除非你移动了它,否则它是对象边界框的几何中心。再次强调,旋转的量取决于修饰符。
-
不带修饰符时,
和
键旋转 15 度。这是与使用
的鼠标旋转相同的角度约束值。它可以在Inkscape 首选项对话框中的旋转捕捉每下拉菜单中更改。 -
使用
,
和
键旋转的角度使得选择的边界框角移动 1 个屏幕像素。这意味着实际的旋转角度取决于缩放级别,当你放大时可以旋转得更精细,当你缩小时可以旋转得更粗糙。 -
对
和
键没有影响,原因与它对
和
键没有影响相同。 -
使用
,
和
键旋转 90 度(四分之一圆周)。
此外,四种常见的变换可以通过键盘快捷键和选择工具控制栏上的按钮来访问,如图图 6-9 所示:
-
可以通过逆时针和顺时针旋转 90 度来选择旋转,也可以通过
和
来访问。 -
水平和垂直翻转选择,也可以通过
和
来访问。

图 6-9. 选择工具的控制栏:变换按钮
注意
翻转相当于在相应维度上按-100%的比例缩放。
要使两个对象交换位置,可以使用双重翻转:首先,选择它们两个,并将它们作为一个整体翻转;然后,依次选择每个对象并单独翻转以恢复它。为了使交换二维化,您需要执行此操作两次,一次使用水平翻转(
),然后使用垂直翻转(
)。
艺术家有时会使用翻转来检查他们的作品。当你画某物时,很容易因为长时间地看着它们而逐渐对错误视而不见。在这种情况下,将整个绘图水平或垂直翻转可以让你以全新的视角看待绘图,并使许多与形状、平衡或构图相关的问题痛苦地明显。
6.6 使用数字进行变换:X, Y, W, 和 H
有时,鼠标和键盘的变换方法都不太能满足需求,因为你确切地知道你想要移动对象多远(或到什么点),或者想要旋转它们的角度。Inkscape 允许你为变换选择指定确切的数值。
这可以在两个地方完成。一个是选择工具的控制栏:

图 6-10. 选择器工具的控制栏:X、Y、W 和 H 字段
在这里,X和Y值指定选择的位置,W和H指定其宽度和高度。这些值不仅会在您选择和取消选择对象或移动或缩放选择时自动更新,而且还可以让您输入任何值,以使选择相应地移动或缩放。
注意
X和Y值的坐标原点位于页面的左上角 (3.4.3 页面大小*)。
在字段中输入一个值后,按
以激活它,或者按
以激活它并移动到下一个字段。要从键盘跳转到第一个字段,按
。
在可编辑字段右侧,有一个下拉菜单用于选择值的单位。Inkscape 支持多种单位,包括in(英寸)、pt(点,每个点为 1/72 英寸)、mm(毫米)和cm(厘米)。默认单位是px(SVG 像素,A.6 坐标和单位)。
最有用的单位之一是%(百分比)。它允许您将对象按相对于其当前大小的百分比进行缩放,而不是按绝对大小缩放。例如,要将选择缩放到其大小的 1.5 倍,将单位切换到%,并在W和H字段中输入150(如果您在它们之间点击锁定按钮,只设置其中一个字段为200就足够了)。
6.7 变换对话框
一个更强大的用于数值变换对象的工具是变换对话框 (
)。它为之前讨论的四种变换类型(移动、缩放、旋转和倾斜)以及一个完整的变换矩阵选项卡分别提供了单独的选项卡。通常,您可以选择一个选项卡,输入您想要的值,然后点击应用。
让我们按顺序查看这些选项卡。
6.7.1 移动选项卡
与选择器控制栏中的X和Y值不同,它们始终显示选择的绝对坐标,在移动选项卡(如图 6-11 所示)中,您可以查看和指定绝对坐标和相对位移。默认情况下,相对移动复选框被选中,因此水平和垂直字段最初显示零,您输入的任何数字都会将选择移动该距离(例如,3和0的值将选择向右水平移动 3 个单位)。

图 6-11. 变换对话框的移动选项卡
现在,取消选中相对移动复选框;你会看到字段中的值已经改变。它们现在显示的是选择的当前坐标,与选择器控制栏中的X和Y字段相同。单位下拉菜单也以类似的方式工作。
6.7.1.1 通过调整间隔进行移动
如果选择了多个对象,并且同时选中了分别应用于每个对象和相对移动复选框,则每个对象都会移动,不是相对于它自己的先前位置,而是相对于其邻居——最近的左侧(对于 X)或下方(对于 Y)选中的对象。这使得“分散”或“紧密排列”对象集合变得容易。
例如,如果你需要分散一行对象,选择它们,并在两个复选框都选中时水平移动它们 5 px。最左侧的对象将向右移动 5 px,下一个对象将移动 10 px,以此类推,直到最右侧选中的对象被移动 5n px,其中n是所选对象的数量。结果,相邻对象之间的每个间隔将增加 5 px,整个行将被分散,就像字间距调整分散文本字符串(15.3.4 字间距和行间距)一样。将这些对象向左移动-5 px 将相反地使它们更紧密地排列在一起:最左侧的对象将向左移动 5 px,下一个对象将移动 10 px,以此类推。对于垂直移动,效果相同,只是它从最接近底部的对象(即具有最小 Y 坐标的对象)开始。
注意
如果对象重叠,则对象移动的顺序可能不明显。规则是,对于水平移动,对象的边界框的左侧边缘或对于垂直移动的底部边缘将被排序以确定相对于哪个对象移动。选择对象的顺序或它们的 z 顺序没有区别。
6.7.2 缩放标签页
在这里,默认单位始终是%,这允许你通过给定的比例快速缩放选择(例如,200%将选择放大两倍或 50%将缩小到一半大小)。单位下拉菜单包含你可能需要的所有绝对单位(切换到它们将显示的值从 100%更改为所选单位中选择的宽度和高度),而按比例缩放复选框与选择器控制栏上的锁定按钮类似。
到目前为止,此选项卡能够执行的所有操作也可以通过选择工具的W和H控件来完成。然而,重要的单独应用于每个对象复选框是此对话框独有的:它将相同的缩放应用于每个选定的对象,围绕其自身的旋转中心进行缩放(6.4 旋转中心),而不是将选择作为一个整体围绕其中心进行缩放。对于%单位,这意味着以相同的比例缩放每个选定的对象;对于所有其他单位,这会导致所有选定的对象获得相同的指定宽度和高度。
与移动选项卡(以及选择控件)不同,当您通过其他方式(例如拖动手柄)变换选择时,缩放选项卡(如图 6-12 所示 Figure 6-12
Figure 6-12. Transform 对话框中的缩放选项卡
6.7.3 旋转选项卡
此选项卡(如图 6-13 所示 Figure 6-13**)旋转整个选择,而是围绕每个对象的自身旋转中心分别旋转。

Figure 6-13. Transform 对话框中的旋转选项卡
6.7.4 倾斜选项卡
此选项卡(如图 6-14 所示 Figure 6-14
图 6-14. 变换对话框的倾斜选项卡
单位下拉菜单包含绝对长度单位、百分比和角度单位(度数和弧度)。以下是它们的工作方式:
绝对单位
- 使用绝对单位时,水平值指定选择框顶部边缘向右(正值)或向左(负值)的绝对位移;垂直值指定左侧边缘向下(正值)或向上(负值)的位移。
百分比
- 使用%单位时,值指定方式与绝对单位相同,但位移量计算为边界框相邻垂直边的给定百分比值。换句话说,这个百分比等于倾斜角的正切。例如,将垂直方向上的矩形倾斜 100%会导致其原本水平的边以 45 度角倾斜。
角度单位
- 这允许您直接设置倾斜角度——即移动边的相邻边的角度。例如,将对象垂直倾斜 45 度与倾斜 100%或对象宽度的绝对值相同。
注意
将对象旋转 90 度是一种创建“无限”对象(当然,在现实中,它将在倾斜的方向上变得非常大,但不是无限的)的简单方法。
6.7.5 矩阵选项卡
此选项卡(如图 6-15 所示)允许您直接编辑对象存储在其transform属性中的变换矩阵(A.7 变换)。变换矩阵的代数解释超出了本书的范围;对于实际应用,只需知道最右侧的两个值(标记为E和F)代表对象的位移(它移动了多远),而其他四个值共同编码了其缩放、旋转和倾斜。

图 6-15. 变换对话框的矩阵选项卡
默认情况下,编辑当前矩阵复选框未选中,该选项卡显示一个单位矩阵,其中A和D的值为 1,其他所有值均为 0。如果您更改任何值并点击应用,此矩阵将被后乘到对象的当前矩阵上,即应用于所选对象当前变换之上。如果您选中编辑当前矩阵复选框,该选项卡将显示并允许您直接编辑所选对象的当前矩阵。(如果选择了多个对象,则将显示第一个或最底部的选中对象的矩阵。)
因此,矩阵选项卡提供了一种在不进入 XML 编辑器的情况下重置对象transform属性的方法:勾选编辑当前矩阵,然后点击清除(这将值重置为单位矩阵),并点击应用。
6.8 粘贴大小
一种在不使用任何对话框的情况下快速为对象指定特定大小的方法是将其大小粘贴到上面。为此,您必须首先复制(
)一个您想要分配给其他对象大小的对象。之后,使用编辑菜单中的粘贴大小子菜单中的命令。
此子菜单中的六个命令实现了粘贴的各种组合。
-
可以粘贴宽度(高度保持不变)、高度(宽度保持不变)或大小(宽度和高度都改变)。
-
将大小粘贴到整个选择中或分别粘贴到每个选定的对象中(类似于变换对话框中的分别应用于每个对象复选框)。
例如,如果您已经导入了许多位图图像,并且想要从它们中创建一个缩略图画廊,您可以通过绘制一个所需缩略图大小的矩形,将其复制到剪贴板,然后选择所有图像并选择编辑 ▸ 粘贴大小 ▸ 单独粘贴大小来统一它们的大小。
6.9 使用 Tweak 工具进行变换
Tweak 工具(
或
)是一种多功能的工具,它不仅将相同的“软画笔”隐喻应用于变换对象,还应用于样式化(8.7 颜色调整)和编辑路径(12.6 路径调整)。此工具具有多个模式;在本章中,我们将介绍处理变换、复制和删除对象的模式。使用这些模式,可以轻松地将集合对象,如克隆镶嵌,扫入复杂和自然 istic 图像中——用散射来绘制。
Tweak 工具的所有模式都共享一些共同的功能。无论您处于哪种模式,您都使用一个圆形软边缘画笔(光标下的橙色圆圈),该画笔由控制栏上的宽度和力量参数控制,并受笔压(如果您有压感平板)的影响。您使用这个画笔在选定的对象上“绘画”以改变它们。
笔刷的宽度从 1 到 100 不等,但这些不是绝对单位;无论缩放如何,1 给你一个非常小的笔刷,而 100 给你一个大约与你的屏幕大小相当的笔刷。在这个工具中,你将始终看到以鼠标光标为中心的圆形笔刷轮廓,并显示当前笔刷的宽度。你可以通过使用工具栏上的宽度控件或
(较窄)和
(较宽)键来更改此值。笔刷是柔和的;其作用在中心最大,并随着向边缘的平滑减少,呈现钟形轮廓。
类似地,力度范围从 1(非常弱;你需要多次轻触对象才能产生可见效果)到 100(非常强;笔刷的第一笔就能在笔刷下施加最大效果)。要更改力度,请使用工具栏控件或按
(较弱)和
(较强)键。
要了解 Tweak 工具的工作方式,在测试绘制中创建多个小对象。最简单的方法是设置一个大约 10x10 的小克隆平铺(16.6 平铺克隆),但你也可以从一个椭圆或路径开始,手动复制(
)或克隆(
)它几次,拖动复制。现在,选择你创建的所有对象,切换到 Tweak 工具,调整宽度使圆圈一次覆盖多个对象,将力度设置为 20 的适中值,通过其切换按钮启用一种模式,并开始拖动对象。显示了会发生什么。

图 6-16. 使用 Tweak 工具的模式转换半透明对象的散布
移动模式
- 将笔刷下选中的对象移动到你拖动笔刷的方向。此模式类似于简单地拖动对象,但不同之处在于,你不需要单独拖动每个对象,而是拖动一个笔刷,它柔和自然地“扫过”所有它碰到的对象。请注意,未选中的对象永远不会受到影响;实现这一点最简单的方法是将所有可调整的对象分组,然后简单地选择该组。
吸引/排斥对象模式
- 将画笔下的选定对象吸引到光标处(默认)或从光标处推开(按住
)。这是一种“吸入”或“吹大”散布某些区域的方法。
移动抖动模式
- 将画笔下的选定对象随机移动到随机方向和距离。您按得越重,力量越高,抖动就越重。这是一种“摇动”您构图的方法,如果它变得过于坚固。
缩放模式
- 缩小画笔下的选定对象(默认)或放大(按住
)。此模式允许您向散布引入缩放非均匀性——在图像的一些部分平滑地使对象变大,在其他部分变小。
旋转模式
- 将画笔下的选定对象顺时针旋转(默认)或逆时针旋转(按住
)。这允许您向散布引入非均匀的旋转,例如将散布纹理“弯曲”以适应图像不同部分的占主导地位的方向。
复制/删除模式
-
在画笔下随机复制一些选定的对象(默认)或删除一些对象(按住
)。与往常一样,对象被复制或删除的概率取决于力量和笔压。这通过提供一种在需要的地方加厚和变薄散布的方法,完成了“散布绘图”工具集。与常规的复制命令(4.4 复制、剪切、粘贴和复制)一样,使用调整工具进行复制会将副本直接放置在原始对象上方,因此复制后使用抖动模式将它们分开是个好主意。如果原始对象已被选中(例如,如果您正在调整一组对象,它们将在该组内被复制,并且不会单独选中),则工具创建的副本将自动添加到选中项中。
6.10 影响哪些变换
现在您可以通过无数的方法变换对象,是时候更仔细地看看当您这样做时,究竟是什么被变换了。实际上,Inkscape 可以可选地影响或不影响对象的某些特定部分。这由选择工具控制栏右端的影响切换按钮控制:

图 6-17. 选择工具的控制栏:影响按钮
有四个影响切换按钮,按以下顺序排列:
笔触宽度
-
此按钮仅适用于缩放,对移动、旋转或倾斜没有影响。当此按钮开启时,任何具有描边的缩放对象(8.1.1 绘画)的描边宽度将按相应比例缩放。例如,如果您将一个 2 像素宽的描边对象缩放到当前大小的两倍,并且此按钮开启,则结果对象将具有 4 像素宽的描边。如果此按钮关闭,它将保持 2 像素宽的不变描边宽度。
如果您在不保持纵横比的情况下缩放对象,并且开启影响描边宽度按钮,描边将按垂直和水平缩放比率的乘积的平方根缩放。例如,如果您将对象水平缩放到两倍宽度但保持其高度不变,则描边宽度将增加 1.415 倍(2 的平方根)。
保持描边宽度不变更为常见。例如,在计划或草图上,您通常希望所有对象都具有相同的固定描边宽度,不受缩放影响,因此您会关闭此按钮。只有当您将描边用作纯视觉元素(例如自由手绘中的刷状描边)时,才需要开启此按钮。
注意
笔和铅笔工具创建的轮廓线(第十四章)在对象缩放时总是缩放其宽度。
圆角矩形
- 此按钮仅适用于缩放,对移动、旋转或倾斜没有影响。它控制 Inkscape 是否缩放矩形的圆角(11.2.2 圆角)。当此按钮开启时,矩形整体缩放,就像将其转换为路径时的缩放一样;这可能会导致圆角变得更大、更小或不再圆润。当此按钮关闭时,Inkscape 将保留圆角的原样。这在例如流程图图表中很有用,您希望所有方框都具有相同的圆角,而与它们的尺寸无关。
渐变
-
此按钮控制是否将变换应用于对象填充或描边的渐变(10.1 渐变工具)。由于渐变(更准确地说,渐变停止点的位置)可以移动、旋转、倾斜以及缩放,因此此按钮适用于任何类型的变换。当此按钮开启时,渐变停止点将作为一个整体与带有渐变的对象一起变换。当此按钮关闭时,渐变将粘附在画布上(位置、方向或缩放不变),而对象被变换。
例如,当这个按钮关闭时,可以将一个对象移动到它自己的梯度之外,或者将其放大以便更多的梯度变得可见。这在梯度位置与您绘图中的其他对象精确协调时很有用,而对象本身只是那个梯度的“窗口”,您想要移动或调整窗口的边缘而不触及梯度本身。
图案
- 这个按钮与影响梯度按钮完全类似,只是它应用于图案(**10.8 图案)而不是梯度。
注意
在未来的版本中,可能会添加更多的影响按钮——例如,用于缩放或不缩放路径效果([第十三章](ch13.html "第十三章。路径效果和扩展"))或滤镜效果([第十七章](ch17.html "第十七章。滤镜"))。
注意
有一个令人烦恼但无害的 bug:无论影响按钮的当前位置如何,在选择工具中使用鼠标交互式变换对象时,始终会显示描边、圆角、渐变和图案在拖动鼠标时的变换效果。然而,一旦您释放鼠标,一切都会根据影响按钮的当前状态进行纠正。
第七章. 捕获和排列
作为上一章的后续,我们将探讨更多高级变换主题。Inkscape 不仅允许你自由变换对象,而且可以快速、精确地进行变换,在一定程度上还可以自动进行。
捕获指的是使某些点、线或路径像磁铁一样工作,当你变换靠近这种磁吸引物的东西时,你正在变换的对象“捕获”到精确的期望位置。排列以规则的方式移动大量对象,使它们对齐、分布、散布或整齐排列成你想要的样子。
7.1 引导线
将对象捕获到对齐位置的最简单方法是通过创建一个引导线或引导。引导线是在画布上的可见、无限长的直线,但它们不是对象。它们不能被选择,它们不会打印,也不会出现在位图导出中。尽管它们会随文档保存,但它们不是 SVG 标准的一部分,因此在 Inkscape 以外的 SVG 查看器中是不可见的。它们只是 Inkscape 特定的辅助工具,用于组织你的艺术品。
例如,引导线可以分隔你的布局部分,帮助你可视化各个区域或单元格的边缘。引导线可以是一条中心线,帮助你围绕它对称地绘制。或者,你可以使用引导线快速检查几个对象是否真的对齐,或者只是看起来对齐。
要创建一个引导线,你必须使标尺可见。(如果你已经隐藏了标尺,可以通过显示它们。)在标尺上的任何位置点击,然后在不释放鼠标的情况下,将光标拖动到画布上。你会看到一个新标尺出现,你现在可以将其放下(通过释放鼠标)到你想要的位置。自然地,从水平标尺拖动创建水平引导线,从垂直标尺拖动创建垂直引导线;更有趣的是,从标尺的末端拖动创建对角引导线,默认情况下以 45 度倾斜。

图 7-1. 通过从标尺拖动创建引导线
移动引导线很容易:使用选择器或节点工具,只需抓住引导线并将其拖动到你想要的位置。(当你将鼠标悬停在引导线上时,它会从蓝色变为红色,这表示现在可以抓住它。)要删除引导线,只需将其拖回到标尺上并放下,或者点击它。
要隐藏文档中的所有指南,请按
键(这是竖线字符,通常与
键在同一键上,但需要按
键才能触发)。然而,这不会删除任何内容;如果您再次按
键(或尝试创建新的指南),所有隐藏的指南将再次显示。此键控制指南的可见性和吸附到指南(您不会吸附到不可见的指南);如果您只想禁用吸附而不隐藏指南,请使用
键(全局吸附切换,7.3 吸附)。
7.1.1 指南对话框
在 Inkscape 中,虽然您可以通过拖动手动移动指南,但也可以通过数字精确指定指南的位置和角度。这通过 指南 对话框(图 7-2
图 7-2. 指南对话框
-
对于水平指南,角度 为 0,而 Y 确定指南的高度。
-
对于垂直指南,角度 为 90,而 X 确定指南的水平位置。
-
最后,对于斜线指南,X 和 Y 值共同确定指南通过的 锚点(最初,这是创建指南时释放鼠标的点)。在画布上,锚点显示为一个小的圆圈。角度 设置斜率(默认为 45 度)。
选择 相对变化 复选框会将对话框中的所有可编辑字段重置为零;现在您输入到其中的任何值都将 添加 到当前值,而不是替换它们。完成操作后,点击 确定 以使更改生效;删除 按钮删除指南。两个按钮都会关闭对话框。
此对话框是 模态的,这意味着在显示时它会锁定 Inkscape 的其余部分。
7.1.2 指南属性
一些影响所有指南的通用选项可以在 文档属性 对话框的 指南 选项卡中找到(
),如图 7-3 所示。为什么不使用全局 Inkscape 预设 对话框呢?因为这些选项被认为是文档本地的,并且与文档一起保存。这意味着不同的文档可以有不同的指南设置。

图 7-3. 文档属性对话框中的指南设置
这里你可以看到全局参考线可见性复选框。默认情况下是开启的,允许你快速隐藏(但不能删除!)文档中的所有参考线。你可以通过按
键来切换参考线可见性,甚至无需打开对话框。切换参考线可见性也会切换到参考线的自动对齐。
接下来,你可以更改参考线在正常状态(默认为半透明蓝色)和鼠标悬停时(默认为半透明红色)的颜色和透明度。点击颜色样本会打开一个小颜色选择对话框:

图 7-4. 颜色选择对话框
A滑块设置alpha(透明度)。你将在许多其他情况下也会看到此对话框(例如,在选择页面背景颜色时)。
最后,当你拖动参考线时,你可以让它们自动对齐。通常,添加参考线是为了让你可以将对象对齐到它们,但当你移动它们时,自动对齐参考线本身也是有用的。参考线只会自动对齐到对象的边界框,而不是其他参考线或网格。
7.1.3 从对象创建参考线
将对象转换为参考线是一种一次性创建多个参考线的方法。这是通过在对象菜单中选择对象到参考线命令来完成的。
注意
默认情况下,此操作会销毁选定的对象,并用一串参考线替换它们。但是,你可以在Inkscape 首选项对话框的工具选项卡中勾选转换参考线后保留对象复选框以防止这种情况发生,或者简单地在使用转换之前按
键。
图 7-5 展示了此命令对不同类型对象的操作方式:
-
对于路径或矩形,它将每个直线路径段或矩形边替换为重合的参考线。例如,如果你只是画一个矩形并将其转换为参考线,你将有一个由两条垂直线和两条水平线界定的矩形区域。或者,为了快速创建通过两个给定点的斜参考线,切换到钢笔工具(14.1 钢笔工具),点击一个点,双击另一个点(以完成直线路径),然后将此路径转换为参考线。
-
对于 3D 盒子(11.3 3D 盒子),盒子的所有 12 条边都被转换为参考线。
-
对于其他任何东西,对象的边界框的四个边被转换为两条垂直线和两条水平线参考线。

图 7-5. 将各种对象转换为参考线
7.2 网格
网格可以看作是辅助线思想的进一步发展。一个网格就是一个覆盖整个画布的规则辅助线图案。网格通常用于吸附、等间距分布对象、建模像素网格(见图 3-3)、轴测绘图(第二十三章)以及许多其他用途。
Inkscape 支持两种类型的网格:矩形和轴测。一个文档可以显示多个网格,类型和/或间距不同。要在你的文档中创建一个新的网格,请转到文档属性对话框的网格选项卡,在创建下选择所需的网格类型,然后点击新建。新网格将在文档中亮起:

图 7-6. 矩形和轴测网格
如图 7-6 所示,矩形网格由两组垂直的导线组成,而轴测网格有三组,一组垂直,另外两组成角度(默认为 30 度)。矩形网格是最常见的类型,而轴测网格主要用于绘制轴测场景(即没有消失点的伪 3D 绘图)。
如果你在一个带有网格的文档中放大和缩小,你会注意到 Inkscape 会尝试在一定的限制内保持网格线的视觉密度。当你缩小视图时,线条当然会彼此靠近,但到了某个点,Inkscape 会认为杂乱无章难以承受,于是清理网格,切换到只显示每第十条网格线。继续缩小视图,网格线的这种减少会反复发生,以便保持网格的可管理性。由于默认的矩形网格间距为 1 像素,在大多数缩放级别上——如果不是这种自适应隐藏的话——网格会如此密集地覆盖页面,以至于你无法工作。
相反,如果你放大视图,Inkscape 将逐渐显示越来越多的网格线,以便均匀地填充你的屏幕。只有当你达到一个所有线条都可见的缩放级别时,新线条才会停止出现:你现在可以看到整个网格,没有任何省略。
在近距离缩放时,你会注意到每第五条线(称为主线)比其余的线(副线)稍暗。这是 Inkscape 为了使在网格中导航更容易而采取的另一种措施,类似于有些标记比其他标记更大的尺子。
要隐藏文档中的所有网格,请按
键。这不会删除任何内容;如果你再次按
,所有隐藏的网格将再次显示。此键控制网格可见性和对齐网格(即,你不会对齐到不可见的网格);如果你只想禁用对齐而不隐藏指南,请使用
键(全局对齐切换,7.3 对齐)。
7.2.1 网格选项
可以在文档属性对话框中更改网格的许多方面。一旦创建了一个网格,你将在对话框底部看到一个网格属性面板:

图 7-7. 网格属性(左,用于矩形网格;右,用于轴测网格)
注意,你可以在同一文档中创建多个网格,并且默认情况下它们将同时可见(尽管你可以分别启用或禁用其中的任何一个)。在对话框中,每个网格都将有自己的选项卡。
让我们看看你可以为网格更改什么:
-
你可以在显示和隐藏网格之间切换,以及启用或禁用对齐到它。如果网格被隐藏,你无法对齐到它,因此取消选中可见复选框将禁用其余属性。
-
原点和间距值定义了网格中线条的位置和密度。(然而,请注意,如果你使网格过于密集,Inkscape 仍然不会显示所有线条,直到你足够接近地放大。)对于矩形网格,有两个间距值:X(水平)和Y(垂直)。对于轴测网格,只有一个间距值——斜线之间的 Y 轴距离;垂直辅助线之间的间隔完全由这个距离和轴测角度决定。所有这些值都像往常一样,与一个单位选择器(下拉列表)相关联。
-
角度仅适用于轴测网格。这两个值设置两组对角线的角度;默认情况下,两者都是 30 度,但它们可以是 1 到 89 度之间的任何值,且不必相等。
注意
如果你在你的文档中添加了轴测网格,将创建具有与网格相同角度的新对角辅助线(7.1 辅助线)。
-
可以分别为主要和次要网格线设置不同的颜色。默认情况下,它们都是蓝色,但次要线条的透明度较低,因此不太明显。
-
可以调整主要线条的频率;默认情况下,每第五条网格线是主要的。
-
对于矩形网格,您可以选择复选框以显示点状网格而不是线状网格;点位于线状网格的交叉点处。主要线交叉处显示小圆圈而不是点。
如果您需要的是可快照的辅助线网格而不是真实对象的网格(即,其他 SVG 软件将像 Inkscape 一样显示的网格),您可以使用克隆平铺(16.6 平铺克隆)或网格扩展(13.3 路径扩展)。
7.3 快照
现在您已经了解了关于辅助线和网格的所有内容,是时候看看辅助线和网格最常用于什么了:快照。
快照的概念很简单:Inkscape 可以尝试将东西放置在您想要它们所在的位置,而不是您用不可避免的不精确鼠标或平板电脑笔移动实际移动它们的位置。一旦您将一个可快照的(可以快照的东西)移动到足够接近一个活动的快照目标,它就会跳到正确的位置。快照是一种基本的交互式操作;它可能只在你用鼠标拖动某物时发生(例如,当您使用键盘上的箭头键移动东西或使用对齐和分布对话框时不会发生)。
可快照的对象可以是整个对象,也可以是对象内部的不同类型的节点或点(路径节点、渐变句柄、中心点等)。除了辅助线和网格之外,快照目标还可以包括其他对象及其部分(即,如果允许,对象可以快接到对象上)。
快照是一个大主题,但并不深奥;一旦你掌握了基本概念,其余的只是记住众多的模式和切换。如果您不需要快照且不使用辅助线或网格,您可能永远不会被它打扰。无论如何,请记住有一个主快照切换——即!键——它可以在整个程序中启用或禁用所有类型的快照。(记住这个快捷键的一个记忆方法是看作%符号是即将快接到斜线辅助线上的两个对象。)与!(辅助线切换)和!(网格切换)不同,此键仅切换快照行为,但不会隐藏或显示任何内容。
7.3.1 快照控制栏
大多数快照控制都收集在快照控制栏中,默认情况下显示在命令栏和画布上方的工具控制栏之间。使用视图 ▸ 显示/隐藏 ▸ 快照控制栏来打开或关闭此工具栏。

图 7-8. 快照控制栏
控制栏最左边的按钮是主快照切换按钮;如果它处于关闭状态,则控制栏上的所有其他按钮都将被禁用。
除了网格和参考线之外,可以吸附并吸附到的东西可以分为两大类,对应于吸附控制栏上最大的两个部分:选择工具中的边界框(4.2 边界框)以及其余工具中的节点和句柄。虽然在某些情况下,一个组中的东西可以吸附到另一个组中的东西,但通常它们只在其自己的家族内部吸附。特别是,截至 Inkscape 0.47 版本,节点和句柄永远不会吸附到边界框上(尽管这可能在以后的版本中改变)。这两组选项的详细信息将在以下章节中详细说明。
最后,工具栏上最后三个按钮控制着适用于两组的主要吸附目标:页面的边缘(2.3 接口概览)、网格(7.2 网格)和参考线(7.1 参考线)。所有这些只影响吸附,但与
和
键不同,它们不会隐藏吸附辅助工具。
在吸附工具栏按钮的所有图标上,蓝色点表示可吸附点(即吸附的对象),而绿色线和圆圈对应吸附目标(即您要吸附到的对象)。一些按钮可以启用/禁用这两种角色中的一种元素。
7.3.2 边界框吸附
如果您只需要对整个对象进行对齐,而不关心节点或其他特殊点,请使用边界框吸附。
在边界框按钮组中,第一个按钮启用边界框角作为可吸附点。(与可以是点或线的吸附目标不同,可吸附点只能是点。)现在,当您使用选择工具拖动或变换任何东西时,选择的边界框将吸附到您启用的任何吸附目标。除非此按钮处于开启状态,否则本组中的所有其他按钮都将变灰。
接下来的两个按钮启用边界框的边和角作为吸附目标。这包括您绘图中的所有可见对象的框,无论它们是否被选中。(例如,如果您只想将角吸附到角上,请在此组中启用第一个和第三个按钮。)在这种情况下,当您同时有一个线和该线上的一个点作为吸附目标时,当您足够接近该点时,点(即边界框角)将接管,但如果您接近吸附线但远离角,您将吸附到线上的最近点,并轻松地沿着它滑动。
本组最后两个按钮将边界框边的中心和整个框的中心作为可吸附点和吸附目标。

图 7-9. 边界框吸附选项
7.3.3 节点和句柄吸附
此组控制不仅路径节点(12.1 路径的解剖结构)的捕捉,还包括渐变/图案句柄(10.1 渐变工具,10.8 图案),旋转中心(6.4 旋转中心),文本基线起点(15.3.3 字距调整),以及一些其他特殊点。
再次强调,此组中的第一个按钮作为该组的本地主开关;它激活节点和句柄作为可捕捉对象,没有它,此组中的所有其他按钮都将变为灰色。
下一个按钮启用对路径的捕捉:您可以在您的绘图中的任何路径上捕捉并滑动节点(它不必被选中),但这些路径上的交点、节点和中点对您正在拖动的节点没有特别的吸引力。这些捕捉目标由接下来的四个按钮打开:路径交点(12.1.2 路径填充),尖点节点,平滑节点(12.5.5 节点类型),以及路径中直线段的中点(图 7-10)。
最后两个按钮为节点添加了两个额外的捕捉目标:几何对象中心和旋转中心(最初与几何中心相同,但可以移动到任何位置)。

图 7-10. 节点捕捉选项
7.3.4 捕捉首选项
在文档属性对话框的捕捉选项卡中,您可以调整捕捉距离——您必须接近捕捉目标多近才能发生捕捉。此参数是针对文档的,并且可以分别设置用于捕捉对象(即,到边界框、路径、节点等)、网格和辅助线的捕捉。
对于网格,默认设置是始终捕捉,这意味着在任何距离都会发生捕捉(对于网格来说,无论如何,距离不能超过网格间距)。如果您缩小了视图,一些网格线被隐藏(7.2 网格),则只会对可见的网格线进行捕捉。
对于对象和辅助线,默认情况下,在 20 个屏幕像素或更近的距离处触发捕捉。使用屏幕像素单位确保捕捉力与缩放无关;如果您想将可捕捉对象移动到足够接近捕捉目标的位置但又避免捕捉,请使用更接近的缩放级别。

图 7-11. 文档属性中的捕捉选项
全局Inkscape 首选项对话框(3.1.1 Inkscape 首选项)也有一个捕捉选项卡(图 7-12)。
-
捕捉指示器(默认开启)是捕捉点处的 X 形标记和文本标签,直接显示在画布上,告诉您刚刚捕捉到了什么。标记和文本在捕捉发生时弹出,并在一秒后消失。捕捉指示器大大提高了可用性,但如果您喜欢,也可以将其关闭。
-
捕捉延迟是 Inkscape 在您的鼠标指针停止后等待的时间(以毫秒为单位),然后进行捕捉。增加此值会使捕捉更加“犹豫”,但如果您的文档复杂且启用了许多捕捉模式,这可能实际上是一件好事,因为这样所有东西都想要捕捉到所有东西。在这种情况下,增加延迟并减少捕捉距离将使您的工作更加容易。
-
仅捕捉指针最近的节点告诉 Inkscape 忽略您可能正在拖动的除鼠标光标最近的节点之外的所有节点。例如,如果您计划捕捉矩形的角落,只需在靠近这个角落的矩形上抓取进行拖动,其他所有角落都不会妨碍您。这是减少“寄生虫”捕捉并加快复杂文档工作速度的另一种方法。如果此选项开启,当您拖动时,Inkscape 将在捕捉启用的节点上显示一个黑色圆形标记。
-
权重因子是另一个控制 Inkscape 在多个拖动点进入捕捉距离时决定捕捉哪个点的参数。当设置为 0 时,Inkscape 会捕捉离目标最近的点,忽略鼠标光标的位置。将其设置为 1 类似于开启仅捕捉指针最近的节点选项;现在,在所有想要捕捉的节点中,捕捉将发生在离光标最近的节点(这可能与可以捕捉的最近节点相同或不同)。使用介于 0 和 1 之间的值允许您平衡这两种捕捉策略。

图 7-12. Inkscape 首选项中的捕捉选项
7.4 对齐
对齐与捕捉类似;主要区别在于,要捕捉某物,您需要设置一个捕捉目标并使用鼠标将选择项移动到足够接近该目标的位置,而对齐命令本身会根据需要移动选定的对象,以以某种方式排列它们。
对齐命令收集在强大的 对齐和分布 对话框中。通过按
或在 对象 菜单中选择一个命令来打开它。基本步骤是:你选择要对齐的对象,调用此对话框,然后点击一个按钮以执行对齐操作。
图 7-13 显示了对话框中的 对齐 部分,所有按钮都有注释。

图 7-13. 对齐对象
为了理解这些按钮的众多用途,请观察以下内容:
-
顶部行的按钮通过水平移动对齐事物;底部行的按钮通过垂直移动对齐。
-
所有对齐按钮都是相对于 锚框 移动物体的。确切地说,什么是锚框可以通过 相对位置 列表进行更改。默认情况下,这在大多数情况下都适用,是 选择,它指的是所有选中对象的联合边界框。然而,你也可以选择选中对象之一的边界框(第一个或最后一个被选中的,或者最大或最小的那个)以及整个页面或整个绘图的边界框。
例如,如果你有一组小对象,并且想要将它们对齐到大型背景对象的顶部,选择所有内容,并在 相对位置 列表中选择 最大对象。
-
在左侧的 10 个按钮中,两行中间的按钮在水平方向和垂直方向上将选中对象的中心与锚框的中心对齐。中心对齐按钮立即左侧和右侧的两个按钮将对象压在锚框的边缘 内部。这六个按钮可能是整个对话框中最常用的。剩下的四个按钮也将对象对齐在锚框的边缘,但 外部。
-
右侧的两个按钮——那些上面有字母的按钮——仅适用于 文本对象。每个文本对象都有一个 基线原点,这些按钮通过这些点对选中的文本对象进行对齐。这有时是必要的,因为如果你通过边界框将文本对象作为常规对象对齐,带有和没有 下划线(例如 y 的底部笔画)和 上划线(例如 d 的茎)的字符将不会保持行:
![对齐文本对象]()
图 7-14. 对齐文本对象
7.5 分布
分布 选中对象意味着将它们移动,使得它们之间的间隔,以某种方式测量,变得相等。相同的 对齐和分布 对话框有八个对象分布按钮和两个文本分布按钮,它们在测量这些间隔的方式上有所不同。与对齐按钮一样,其中一半的按钮(顶部行)在水平方向上工作,另一半的按钮(底部行)在垂直方向上工作:

图 7-15. 分布对象
在对齐部分的中心按钮下方,分布部分有两个用于分布中心的按钮。按下其中一个按钮,所选对象会以这种方式移动,使得它们的中心(更准确地说,是它们边界框的中心)在水平或垂直方向上彼此等距。
在这两个按钮的立即右侧和左侧,还有四个按钮执行相同的等间距分布,用于边界框的右侧和左侧、底部和顶部。
更右侧的两个按钮,不是均等化边界框同名边的距离,而是使它们之间的间隙相等。这意味着,对于水平间隙均等化,一个对象的右边缘到下一个对象的左边缘的距离将是相同的。当对象宽度不同时,这通常比均匀分布它们的中心更有视觉意义。图 7-16 显示了分布中心和均等化间隙之间的差异。

图 7-16. 物体分布中心与它们之间间隙均等化
最后,最右侧的两个按钮用于分布所选文本对象的基线起点。
与对齐按钮不同,分布按钮始终使用选择边界框作为其锚点框(即,“相对于:”列表不影响对话框中的分布部分)。换句话说,分布始终保留选择的边界框,因为它从不移动最左和最右(对于水平)或最上和最下(对于垂直)的对象,而只移动介于它们之间的对象。(这一点的后果是,分布只对三个或更多选定的对象有意义。)
因此,如果在分布后你发现你的对象过于密集或过于稀疏,只需选择分布边缘的一个对象,并将其移向其他对象(以使其更密集)或远离其他对象(以使其更稀疏)。然后,再次选择所有对象并重新分布它们。
注意,所选对象可能在分布前后重叠。即使是在均等化间隙时,对象的边缘也可能重叠;在这种情况下,间隙被认为是负的,并且当你点击按钮时,它们仍然被均等化(换句话说,所有相邻对象被使重叠相同数量的量)。
当你使用节点工具(12.5 节点工具)时,对齐和分布对话框显示四个按钮,允许你水平和垂直地对所选路径节点进行对齐和分布:

图 7-17. 对路径节点进行对齐和分布(用于节点工具)
7.5.1 随机化、去簇和消除重叠
到目前为止,我们已经看到了基本的对齐和分布命令。它们都有一个共同点:每个命令都只在一个维度上工作,要么是水平方向,要么是垂直方向。然而,同一个对话框提供了许多更有趣的功能,这些功能涉及在两个维度上同时移动对象。
随机化简单地将每个选定的对象移动到选择框内的随机位置。每次点击按钮都会产生一个新的随机排列;你可以重复此操作,直到找到最满意的随机化:

图 7-18. 随机化对象位置
注意
当你反复点击随机化按钮时,只有第一次点击会记住当前选择的边界框;所有随后的点击都将使用这个记住的边界框作为散布对象的区域,即使边界框因为随机化而改变。这防止了你在反复随机化时物体漂移。
去簇是一个类似于等距间隙操作的操作(这就是为什么它的按钮位于等距间隙按钮下方),但它同时在两个维度上工作,试图平衡选择中所有相邻对象对之间的最近距离。它最适合大量对象:

图 7-19. 去簇对象
去簇是一个不精确的操作,你可能想不止使用一次,而是反复使用,直到你对结果满意。它不会完全替换你当前的排列,而是在小步骤中改进它,将每个对象推向与其直接邻居等距离的点。这种操作最显著的结果是减少了簇——物体过于密集的区域。
在大多数情况下,去簇过程会收敛——也就是说,物体分布的视觉不均匀性会减少,每次随后的去簇效果会越来越小。在彻底去簇后,进一步尝试去簇只会缓慢地使物体群在随机方向上扩散和迁移,而不会进一步改善其均匀性。
去簇对象会产生一种同时具有随机性和人工性的特征纹理。它非常类似于如果要求人类用随机点均匀填充空间时人类可能会产生的效果。此类纹理的传统例子包括圆点图案(10.8.3 库存图案)和点雕刻,其中阴影是通过平滑地改变散布点的密度来创建的。
注意
去簇状化不考虑对象的实际形状,只考虑它们的边界框。因此,它最适合具有简单一致形状的多个对象,例如圆形或星星。我们将在克隆平铺器部分看到更多去簇状化的例子(16.6 平铺克隆)。
与去簇状化不同,移除重叠是一个确定性操作:它尝试通过最小的距离移动每个所选对象,以便所有所选对象都能摆脱重叠——通常在第一次尝试就成功。它执行移动的量当然取决于对象的初始排列,但在大多数情况下,移除重叠后对象的布局仍然与原始布局相似,尽管不如去簇状化后那么相似。您可以设置要添加到对象边界框中的水平和垂直间距(以px为单位):

图 7-20. 移除对象之间的重叠
注意,那些没有与其他任何所选对象重叠的对象没有移动。
最后,对话框底部的连接网络布局按钮仅适用于具有自动连接器的图表。
7.5.2 在表格中排列对象
作为对齐和分布命令的进一步发展,行和列对话框(从对象菜单访问)将所选对象排列成二维表格,具有多个间距和布局选项,如图图 7-21 所示。

图 7-21. 使用“行和列”对话框从现有对象创建表格
注意,使用此对话框仅适用于您已经拥有的不同对象——例如,您想从中创建缩略图画廊的导入位图。如果您只需要一个图案、表格或相同对象(或仅大小或样式不同的对象)的网格,请查看克隆平铺器(16.6 平铺克隆)。
您需要决定的第一件事是表格中的行数和列数。对话框会感应所选对象的数量,并且当您更改行数(或列数)时,它会重新计算列数(或行数),以确保表格的大小足以容纳所有对象。例如,如果您选择了 29 个对象,最初对话框会提供 1 行和 29 列;如果您通过向上滚动增加行数,行数和列数将变为 2 行和 15 列、3 行和 10 列、4 行和 8 列、5 行和 6 列、6 行和 5 列,依此类推。
在行和列字段下,两个复选框控制所有行和列是否在高度和宽度上相等。例如,当选择等高复选框时,整个表格中的所有行都将与所有对象中最高的对象一样高(加上间距,见下文)。如果未选中,则每行的高度将仅与该行中所有对象中最高的对象一样高(加上间距)。
在下方,一组单选按钮控制其行和列内对象的对齐方式;默认情况下,它们在两个维度上都是居中的。
对话框中剩余的控件定义了您的表格大小。适应选择框选项确保在您在此对话框中点击排列之前,表格的宽度和高度将与您的选择完全一致。换句话说,在创建表格后,Inkscape 将设置行和列之间的间距,以确保选择的总体尺寸不变;这可能会导致重叠(即负间距)。例如,如果您希望表格更稀疏,请撤销排列,将一个对象从其他对象拖开,重新选择所有对象,然后再次点击排列。或者,您可以通过选择设置间距并输入所需的值(以px为单位)来显式设置行和列的间距。
第八章 样式
现在我们已经了解了如何选择和变换对象,是时候开始一个新的主题了,这个主题将在接下来的几章中让我们感到愉快:样式。Inkscape 文档中对象的看起来如何由该对象的样式决定,该样式由单独的属性组成。如果不熟悉可用的样式属性和编辑它们的工具,掌握这个程序是不可能的。
在本章中,我们将查看最基本样式属性,包括常见的填充(填充和描边)和不透明度类型。这将由第九章介绍描边样式,第十章将详细探讨渐变和图案,第十五章将探索文本样式属性。模糊等滤镜效果也是对象样式的一部分;我们将在第十七章中讨论它们。
8.1 样式基础
Inkscape 有相当多的对话框、命令和工具,用于处理对象的样式。如果您使用 Inkscape 进行任何实际操作,您很可能已经使用了一些。我们不会逐个讨论这些 UI 元素,而是首先查看一般的样式概念和特定属性,在相关时检查相应的工具。
您应该一开始就了解的一个与样式相关的命令是编辑 ▸ 粘贴样式 (
)。它将您最后复制到剪贴板的对象样式应用到所有选定的对象上。当您想要某些对象在样式上大致相同但并非完全相同时,这是一个真正的救星;通常,首先将相同的样式粘贴到所有对象上,然后只更改需要不同的属性要容易得多。
注意
SVG 文档源中对象样式的表达不仅由 SVG 标准定义;为此目的,SVG 重新使用了另一个称为层叠样式表(CSS)的标准。然而,SVG 只使用 CSS 属性和概念的一个子集;有关详细信息,请参阅 SVG 标准(w3.org/TR/SVG11)以及附录 A。
8.1.1 填充
如您可能已经知道,对象有填充和描边,统称为填充。可以说,一个对象被一种填充填充,被另一种填充描边。填充可以有多种不同类型,包括:
无(无填充)
- 将填充设置为
none的对象只有描边,将描边设置为none的对象只有填充。如果填充和描边都设置为none,对象将完全不可见(并且不能通过点击选择,5.4 通过点击选择:选择器),就像设置为零不透明度时一样。
纯色
- 这是最常见的选项,用纯色填充或描边。在本章的后面部分,我们将探讨设置和更改填充和描边颜色的许多方法。
渐变或图案
- 填充和描边都可以有各种类型的平滑颜色渐变或由任何对象组成的重复图案。这些复杂的画笔类型是单独章节的主题(第十章)。
未设置
- 这意味着填充或描边未指定,因此可能从对象的原生祖先继承。这不同于
none,它只是强制不可见。由于祖先通常是没有任何自己的描边或填充的层或组,具有未设置填充或描边的对象将获得 SVG 默认值:不可见的描边和纯黑色填充。取消设置对于克隆(第十六章)很有用,因为它允许创建与原始对象画笔不同的克隆。
编辑对象样式的主体工具,即填充和描边对话框(
),在其填充和描边画笔标签页上有多个按钮,对应不同的画笔类型。按下的按钮表示所选对象的当前画笔类型;如果选择了具有不同画笔类型的多个对象,则没有按钮被按下,对话框显示多种样式。
此外,学习使用状态栏中的所选样式指示器(2.8 样式)来快速确定所选对象的画笔类型,以及通过此控件右键菜单更改它(请注意,要访问此菜单,您需要右键单击顶部的填充色块以更改填充画笔,以及右键单击底部的描边色块以更改描边画笔)。

图 8-1. 所选描边指示器中的画笔类型(左)和填充和描边对话框(右)
注意
路径不需要闭合即可填充;未闭合的路径(12.1.1 子路径)仍然可以填充,就像它们的端点通过一条未描边的直线段连接一样。
一个重要的属性,与其它画笔属性不同,它适用于填充但不适用于描边,是填充规则。它可能有两个值之一。evenodd的值表示任何自相交或内部子路径(12.1.1 子路径)在路径或描边的填充中创建孔洞。nonzero的值表示大多数孔洞被填充覆盖(更精确地说,如果内部子路径的方向与外部子路径相同,孔洞将被填充;否则它仍然是一个可见的孔洞)。要更改此属性,请使用填充和描边对话框中的两个切换按钮:

图 8-2. 在填充和描边对话框中更改填充规则
注意
即使使用 nonzero *填充规则,一些内部子路径仍然可以产生孔洞。这取决于子路径的方向(**12.1.1 子路径),然后可以对其应用描边。
组
- 将填充或描边分配给组本身几乎没有意义,因为组内的对象通常有自己的绘画并忽略其父组上设置的任何内容。实际上,如果你尝试在 Inkscape 中对组设置填充或描边,除了在组上设置外,它还会假设你打算递归地对所有组成员分配填充或描边。只有明确 未设置 的组成员填充或描边才会保持不变;然而,它们仍然会从它们的祖先那里继承新的填充或描边。
克隆
- 如果你尝试在克隆对象(第十六章)。

图 8-3. 填充不透明度、描边不透明度和主不透明度
此外,与填充或描边不透明度不同,主不透明度适用于不能有自己的填充或描边的对象,例如位图和大多数克隆。
注意
不透明度和透明度之间有什么区别?它们只是从相反的角度看待同一件事:当一个物体的不透明度为零时,它是完全透明的;相反,当其透明度为零时,它是完全不透明的。你可能会遇到的另一个与不透明度同义的词是alpha。
8.2 颜色模型
样式最基本且最重要的构建块是颜色。关于在计算机上表示颜色的讨论可以轻易填满一本书;虽然 Inkscape 还不是处理颜色最强大的程序,但它在这个领域仍然非常丰富和复杂。
你将面临的第一选择是在颜色模型之间。不同的颜色模型可以以不同的方式表示相同的颜色。
8.2.1 RGB
你可能已经知道最常见的颜色模型,RGB,在这种模型中,任何颜色都由红色、绿色和蓝色成分的混合,或者说是通道来表示。这种模型几乎被所有计算机显示器实现(这些显示器通常由这三种颜色的微小光源组成),也是 SVG 以及大多数其他计算机图形格式中使用的首选颜色模型。
根据你使用的软件,RGB 颜色中每个通道的值可以是 0 到 1 之间的分数数(例如 0.5)或 0 到 255 之间的整数(例如 127)。这两个系统是等效的;例如,R = 0,G = 0.5,B = 1.0 的颜色与 R = 0,G = 127,B = 255 的颜色相同。Inkscape 通常使用 0 到 255 的整数格式,本书中我们也将偏好这种格式。(然而,在 Inkscape UI 的一些部分,你会看到选择使用整数或分数格式的一个选项。)
在 RGB 中,通道的值越高,颜色越浅,值越低,颜色越深。因此,RGB 0/0/0 是黑色,RGB 255/255/255 是白色。所有通道值都相等的任何 RGB 颜色都是灰色;使通道值不等增加了颜色的饱和度,不等越大,饱和度越大。因此,纯色如红色(RGB 255/0/0)或黄色(RGB 255/255/0)具有最大可能的饱和度。
填充和描边对话框允许您使用数字输入字段(带有滚动按钮)或滑动条来编辑 RGB 颜色,滑动条在渐变色槽中移动(参见颜色插页上的图 2)。请注意,随着您移动滑动条,槽的颜色会发生变化;每个槽都显示您在槽内移动滑动条时将得到的颜色,如果其他滑动条保持原位。底部第四个滑动条,标记为A(alpha),代表填充或描边的透明度(因此,严格来说,它不是颜色的一部分)。
RGB 颜色通常表示为RRGGBB形式的字符串,其中每个组件由一个两位十六进制数(以 16 为基数,而不是传统的 10 为基数)给出。十六进制数可以使用数字0到9和字母A到F。通道的最大整数值——十进制的255——在十六进制中表示为FF。例如,000000是黑色,FFFFFF是白色,660000是深红色。这种表示颜色的形式用于 Inkscape 文档的 SVG 源,以及许多其他软件和语言(如 HTML)。当您从所选样式指示器中填充或描边样本的右键菜单中选择复制颜色时(图 8-1),颜色的RRGGBB表示将复制到剪贴板。此外,还可以在填充和描边对话框中的RGBA字段中查看和编辑带有两个附加数字的RRGGBBAA表示(表示填充/描边透明度)。
如果选择了多个对象,并且它们有不同的填充或描边颜色,填充和描边对话框和所选样式指示器都会显示平均颜色。如果您更改该平均颜色,它将被分配给所有选定的对象,实际上消除了这些对象可能具有的颜色差异。

图 8-4. 所选样式指示器中的平均颜色
注意
这种平均是在 RGB 中完成的——也就是说,平均颜色的 R、G 和 B 通道是输入颜色中相应通道的算术平均值。根据 SVG 规则,相同的平均公式用于渐变,以在停止颜色之间进行插值(10.2 渐变定义)。
8.2.2 CMYK
与 RGB 类似,在CMYK模型中,颜色是通过混合颜色通道获得的。然而,CMYK 有四个通道,而不是三个:青色、品红色、黄色和黑色(见彩页上的图 3)。这种颜色模型最适合打印输出,因为许多专业打印机和印刷机使用 CMYK。由于 Inkscape(以及 SVG 本身)还不非常适合生产打印输出,因此在 Inkscape 中对这种颜色模型的支持相对较浅。最重要的是,即使您指定了 CMYK 颜色,写入 SVG 的也是其 RGB 近似值,并且从 CMYK 到 RGB 以及反向转换通常会引入失真,因为并非所有 CMYK 颜色都可以在 RGB 中精确表示,反之亦然。
注意
传统上,CMYK 通道的数值范围是 0 到 100,而不是像 RGB 那样从 0 到 255。
CMS(颜色管理系统)选项卡位于填充和描边对话框中,允许您在一个校准空间中编辑颜色,这可能包括真正的校准 CMYK(不是CMYK选项卡中的近似值)或 Adobe RGB。这目前是一个实验性功能;它需要在Inkscape 首选项中正确设置颜色管理(3.1.1 Inkscape 首选项)。
8.2.3 HSL
RGB 和 CMYK 都不是非常直观;它们代表计算机和打印机处理颜色的方式,而不是艺术家使用的方式。因此,Inkscape 通常更倾向于另一种颜色模型:HSL(色调,饱和度,亮度)。与 RGB 和 CMYK 不同,HSL 的通道不是混合在一起的单个颜色;相反,它们是定义颜色的属性,这些属性共同明确地定义了颜色。
色调通道是最大饱和度颜色的彩虹,从红色开始,经过黄色、绿色、蓝色,然后回到红色。饱和度在从最大色彩丰富度,通过单调乏味和暗淡,到相同亮度级别的纯灰色之间变化。最后,亮度通道从黑色到给定的颜色,然后到白色。(这意味着任何具有最大亮度的颜色都是白色,任何具有零亮度的颜色都是黑色,无论色调和饱和度如何。)
你可能在其他程序中看到过类似的颜色模型,即HSV(色调,饱和度,值),有时也称为HSB(色调,饱和度,亮度)。它与 HSL 最明显的区别在于,在 HSV 中,值组件只从黑色变化到给定的颜色(例如,红色)。在 HSL 中,亮度组件的范围从黑色通过给定的颜色到白色(即,它在亮度和暗度方面是对称的)。
一旦习惯了 HSL 颜色模型,它就非常自然。当您认为某些颜色不太对时,例如,您可能会建议将其“变亮”或“减少饱和度”,而不是“添加更多绿色”。因此,Inkscape 中大多数与颜色相关的工具都使用 HSL 来选择和更改颜色。
在填充和描边对话框中,有两个不同的选项卡,允许您在 HSL 模型中编辑颜色(见颜色插入图中的图 4)。第一个(标题为HSL)使用传统的线性滑块,而另一个(标题为轮盘)有一个圆形环作为 H 通道(由于如果拉直,它将比适合窗口的线性滑块更长,因此具有更好的分辨率)和一个三角形,该三角形编码饱和度和亮度通道。旋转色调环上的标记也会旋转三角形,使其最大饱和度尖端始终指向环上的当前色调。
8.3 调色板
将颜色分配给所选对象的填充或描边最简单的方法是点击编辑窗口底部、状态栏上方(见颜色插入图中的图 5)的调色板中的某个样本。简单点击将填充颜色分配给所选对象;
点击将描边颜色分配。调色板最左侧的按钮移除填充或(使用
)描边。
除了点击之外,您还可以将颜色从调色板拖放到对象上。这是在不选择对象的情况下更改对象非常少的方法之一;如果您将颜色拖放到某个对象上,该对象将改变,即使它没有被选中,即使有其他对象被选中。拖放也可以用于更改描边颜色,您需要将颜色样本精确地拖放到路径或形状的轮廓上。
Inkscape 目前还不允许您通过用户界面编辑颜色样本或向调色板添加新的样本。然而,您可以选择 Inkscape 内置的许多不同调色板之一。在调色板的右侧,有一个带有三角形标记的按钮;点击它将打开一个菜单,列出可用的调色板,例如网页安全调色板、Ubuntu 和 Windows 用于其用户界面的调色板,以及各种单色调色板(绿色、金色等)。Inkscape 将记住您选择的调色板。
在相同的菜单中,您可以选择样本的标准尺寸,它们的宽度(窄样本更难点击,但可能通过将整个调色板适应屏幕宽度来消除调色板的滚动条),以及启用调色板环绕(这会使它更高,但也消除了滚动条)。
除了停靠的水平调色板外,Inkscape 还有 样本 对话框(
)。它可以显示所有相同的调色板,并具有所有相同的大小选项,除了它还有一个额外的 列表 选项,其中列出了所有颜色及其名称。您可能更喜欢它,因为作为一个对话框,它可以放置在右侧的停靠处,并挤压成一个狭窄的垂直条。

图 8-5. 以列表格式显示颜色及其名称的调色板菜单(左)和样本对话框(右)
您可以编辑您的 Inkscape 调色板,以及添加新的调色板。每个调色板都是一个可以手动编辑的文本文件。在 Unix 系统上,Inkscape 伴随的调色板位于 Inkscape 安装前缀的相对路径下,在 palettes 目录中(通常是 /usr/share/inkscape/palettes,或者如果您自己编译了 Inkscape,则是 /usr/local/share/inkscape/palettes)。自定义调色板可以放置在 ~/.config/inkscape/palettes;如果该目录不存在,您需要创建它。在 Windows 上,调色板位于 Inkscape 安装目录内的 share\palettes 中(通常位于 Program Files\Inkscape 下)。
Inkscape 从其调色板文件格式借鉴了 GIMP 位图编辑器的格式,因此您可以将任何来自 GIMP 分发的调色板拖放到该目录中,以便在 Inkscape 中使用。以下是默认调色板文件 inkscape.gpl 的开头;颜色成分(R、G、B)以 0..255 格式表示:
GIMP Palette
Name: Inkscape default
Columns: 3
# generated by PaletteGen.py
0 0 0 Black
26 26 26 90% Gray
51 51 51 80% Gray
77 77 77 70% Gray
...
8.4 所选样式指示器:绘画命令
除了设置各种绘画样式的命令外,所选样式指示器的右键菜单(见 图 8-1)和书法笔(14.3 书法笔工具**)工具进行绘图并希望结果使用相同的颜色时,此命令可能很有用,尽管铅笔创建带有描边但没有填充的路径,而书法笔创建带有填充但没有描边的路径。
取消填充/描边
- 将填充或描边设置为未设置(8.1.1 涂料)。请注意,这与移除它不同。
移除填充/描边
- 将填充或描边设置为
none(8.1.1 涂料)。此命令有一个方便的快捷键:在填充或描边样本上中间点击以将相应的涂料设置为none。如果涂料已经被移除,中间点击将创建默认的填充或描边(通常是黑色)。除了调色板上的“无涂料”样本外,在选定的样式指示器上中间点击是移除所选对象描边最快的方法。
使填充/描边不透明
- 从涂料中移除任何填充不透明度或描边不透明度(8.1.2 透明度)。调色板右侧的O控制显示的不透明度保持不变。
8.5 选定样式指示器:颜色手势
除了右键菜单命令外,选定的样式指示器有一个方便的方法来快速调整颜色:颜色手势(见颜色插入页的图 6)。
要使用颜色手势,抓住填充或描边色卡并按照以下描述拖动。请注意,这仅在色卡显示纯色时才有效;对于显示无(即没有涂料)、N/A(即未选择任何内容)或显示渐变的色卡则不适用(尽管你可以在渐变工具中选择一个或多个渐变停止点并通过颜色手势调整它们,就像调整对象一样)。
颜色手势在 HSL 颜色空间中工作。不使用任何键盘修饰符拖动会调整色调通道,使用
拖动会调整饱和度,使用
拖动会调整亮度。
调整是通过“旋转”色卡远离原始方向来完成的,原始方向假设为东北方向 45 度,即从色卡对角线拖入文档窗口。一旦你点击并拖动色卡,想象一条从你点击的东北方向出发的对角线,穿过整个 Inkscape 窗口。通过将色卡拖动到该线下方或右侧,你会降低相应的颜色通道,直到窗口下方的最小值;通过将色卡拖动到该线上方或左侧,你会增加它,直到窗口左侧的最大值。如果你将鼠标悬停在 45 度线上,变化将为零。
当你进行颜色手势操作时,鼠标光标会发生变化,反映了当前正在调整的通道,并指示增加和减少值的方向。同时,注意状态栏,它会在你拖动时显示你正在调整的通道、该通道的原始值、新值和差异。
这种调整的角性质意味着你可以轻松地改变变化的精度。如果你将鼠标拖动到足够接近色卡的位置,任何微小的移动都会导致颜色的巨大变化。如果你需要更精细的调整,只需将鼠标拖动到色卡更远的位置,朝向 Inkscape 窗口的中心甚至其右上角,在那里相同的移动会产生非常小的颜色变化。
你可以在拖动时切换通道——也就是说,如果你想调整所有三个通道,不需要一次次从色卡拖动。你可以通过按住并释放
和
作为必要的操作来完成。请注意,当你改变拖动过程中的键盘修饰符时,零变化线会临时旋转以穿过当前鼠标位置;这样做是为了确保在切换修饰符远离原始 45 度线时,颜色不会发生突然变化。
修饰符是特殊的。按
表示“不执行任何操作”;这允许您在不释放鼠标的情况下将鼠标移动到更方便的位置,以便在释放
后继续调整颜色。与其他修饰符一样,释放
暂时重新定义零变化轴,使其通过
释放的点。例如,想象您通过
拖动向窗口底部边缘使颜色变暗,现在您需要降低其饱和度。然而,您不能
拖动它更低,因为没有足够的空间。在这种情况下,在不释放鼠标的情况下,将其
向上拖动到方便的位置,然后根据需要
向下拖动。此外,您可以在按住
的同时从色块开始拖动,以避免颜色发生变化,直到您将其调整到更方便的位置。
例如,您可以选中一个绿色矩形,首先通过从填充色块拖动并稍微高于 45 度线来将其变为蓝绿色;然后,在不释放鼠标的情况下,按
并稍微向右拖动以加深颜色;然后按
,释放
,并调整饱和度。您可以在单次拖动过程中按或释放
和
任意次;当您最终对颜色满意时,释放鼠标以提交更改。
除了精确调整外,您还可以使用颜色手势来非常快速地执行一些常见的颜色转换:
-
-将色块向右并向下拖动以将所有选定的对象涂成黑色。 -
-将色块向上并向左拖动以将所有选定的对象涂成白色。 -
-将色块向右并向下拖动以降低选定对象的颜色饱和度(将它们变为灰色)。 -
-将色块向上并向左拖动以最大化选定对象颜色的饱和度。
注意,当选择多个不同颜色的对象或渐变停止点时,所选样式指示器显示它们的平均颜色。如果您通过手势调整该颜色,则更改后的颜色将分配给所有选定的对象或停止点,从而消除它们之间的任何差异。如果您想调整许多不同颜色的对象并保持它们之间的相对差异,请使用调整工具的颜色模式(8.7 颜色调整)、颜色调整扩展(8.8 颜色扩展和过滤器)或颜色过滤器(17.3 预设过滤器)。
8.6 吸管工具
吸管工具允许您直接从绘图的任何点或区域选择颜色(以及可选的不透明度),并将其分配给选定的对象(或选定的渐变句柄,10.4.2 绘画)。使用此工具,您可以将自己的绘图作为调色板,轻松地重复使用您为其他事物创建的颜色。当您需要将矢量对象与导入的位图结合和混合时,它也是必不可少的。
关于此工具的重要之处在于,在拾取颜色时,它不会关注您点击的是哪个对象;相反,它只是简单地从渲染的屏幕图像中获取点击的像素的颜色。这意味着您可以从位图、半透明对象的堆栈、模糊边缘(17.1 模糊)或渐变中间轻松地拾取颜色。这也意味着,如果一个对象太小而无法在当前缩放级别下渲染,您就无法拾取其颜色;如果您在白色背景上点击黑色对象的边缘,您很可能会拾取该点抗锯齿像素的中等灰色颜色(参见图 1-1"))。
8.6.1 采样
当您切换到吸管工具(
或
)时,状态栏开始报告位于光标直接下方的颜色。因此,如果您想了解某个区域的颜色,您甚至不需要点击:只需将鼠标悬停在该区域上,并读取状态栏。此外,您可以在任何时候按
将光标下的颜色复制到剪贴板(以RRGGBBAA十六进制字符串的形式);从那里您可以将它粘贴到 Inkscape 中的任何文本对象或外部程序中。
8.6.2 分配
可以通过点击或拖动将颜色分配给选定的对象或渐变句柄。通过点击,你只是取屏幕像素的颜色,这个颜色恰好位于你的鼠标光标下。通过拖动,你创建一个以你开始拖动点为中心的圆形区域,当你释放鼠标时,工具将平均这个圆内所有像素的颜色。

图 8-6. 使用滴管工具
使用平均值选择对于从位图中采样颜色特别有用。例如,如果你需要创建一个与照片中人脸脸颊颜色相同的矢量对象,从脸颊中单独选择像素不太可能得到你需要的;由于照片的非均匀性,选择的颜色可能会太亮或太暗。然而,如果你平均覆盖大部分脸颊的圆形区域的颜色,结果将更有说服力。
默认情况下,滴管将颜色分配给所选对象的填充。当你右键单击或拖动时,它将改变它们的描边。
8.6.3 不透明度
使用滴管工具控制栏上的两个切换按钮,你可以更改它处理透明度的方式。不透明度:拾取按钮控制是否拾取光标下点的透明度,而分配按钮控制是否将拾取的不透明度值分配给选定的对象。(当拾取关闭时,分配按钮被禁用。)
注意
工具拾取的不透明度是点击点所有对象的累积不透明度。例如,如果你点击一个 50%不透明度的单个对象,拾取的值是 50%。如果有两个这样的对象重叠,拾取的值是 75%。滴管工具忽略页面背景的透明度(如文档属性中设置3.4.2 背景)。
让我们看看一个简单的例子。假设你有一个 50%不透明度的亮红色(FF0000)对象,使其看起来是浅红色。现在,你选择另一个对象并尝试从红色对象中拾取颜色。会发生什么?
不透明度:拾取按钮关闭
- 工具将拾取浅红色颜色(
FF8080)和没有透明度。换句话说,透明度已经“乘入”了颜色。状态栏将报告光标下的 FF8080,这就是所选对象将得到的颜色——而所选对象的透明度(如果有),将不会改变。只有在这种情况下,页面背景的可见颜色才会混合。
不透明度:拾取按钮开启
-
工具将拾取实际的亮红色颜色(
FF0000)和 50%的不透明度分别。状态栏将显示光标下的 FF0000 alpha 0.5。现在,当你点击时会发生什么取决于另一个按钮,分配:-
如果分配打开,颜色(
FF0000)和不透明度(50%)都将分配给所选对象的填充或(使用![http://atomoreilly.com/source/no_starch_images/1735338.png.jpg])描边。请注意,不透明度将成为所选对象的填充或描边的不透明度,而不是它们的总不透明度(8.1.2 不透明度)。 -
如果分配关闭,明亮的红色颜色(
FF0000)将被分配给所选对象的填充或描边,而拾取的不透明度将被简单地丢弃,并分配 100%的不透明度。例如,如果您选择一个半透明对象,并使用拾取打开且分配关闭时点击该对象本身,该对象将失去其不透明度但保留其颜色。
-
8.7 颜色调整
我们已经在变换章节中看到了调整工具的一些功能(6.9 使用调整工具变换)。让我们看看其两种改变对象颜色的模式,颜色油漆和颜色抖动。这两种模式都适用于纯色油漆以及渐变(10.7 渐变技巧和示例)。参考6.9 使用调整工具变换来回顾工具的宽度和力量参数是如何工作的。
注意
在未来版本中,这些模式可能被拆分为单独的工具。
8.7.1 颜色油漆
颜色油漆模式用于在刷子下应用颜色到所选对象。正在使用的颜色——更确切地说,是样式,因为它包括填充和描边——可以在工具控制栏的右端(在画布上方)的样式色块中看到。要更改此应用样式,只需在此模式下的调整工具中点击颜色调色板或使用任何其他样式编辑命令(如填充和描边对话框)即可。
注意
与其他所有工具不同,在颜色油漆模式的调整工具中,您不能直接将样式分配给所选对象;任何样式设置命令都会“拦截”以更改工具的样式。
工具样式的填充应用于被涂对象的填充,而描边应用于描边。如果工具样式没有填充或没有描边,则不会影响填充或描边,相应地。例如,如果您想将对象的填充涂成蓝色但保留其描边不变,请将蓝色填充分配给工具样式(只需在调色板上点击蓝色)但将其描边设置为none(在状态栏中描边色块上中击)。
此模式实际上是在对象上绘画,逐渐将它们的颜色向目标颜色转变。例如,如果您在蓝色填充的对象上持续使用黄色填充进行绘画,该对象将首先变成蓝绿色,然后变成绿色,然后变成黄绿色,最终变成您正在使用的黄色。
使用
画图会反转你应用的颜色(例如,用黄色画图时,
会逐渐应用蓝色)。

图 8-7. 使用调整工具的颜色画图模式
这种逐渐过渡的速度取决于力度值,如果你有一个压力感应平板,则还取决于笔的压力。此外,由于画笔是“软”的,因此被画笔边缘接触到的对象比被画笔中心击中的对象受影响较小。
8.7.2 颜色抖动
颜色抖动模式不应用任何颜色,而是对它接触到的对象的颜色进行抖动(随机化)。动作的力度决定了随机化的强度——也就是说,颜色偏离原始值有多远:

图 8-8. 使用调整工具的颜色抖动模式
8.7.3 通道
在调整工具的控制栏上,模式按钮的右侧有四个通道切换按钮:H、S、L和O。它们允许你分别开启和关闭工具在对象色调、饱和度、亮度和不透明度上的作用。
例如,如果你想在不改变色调的情况下提高画图中某些部分的饱和度,选择一些最大饱和度的颜色(如纯红)并关闭除S以外的所有通道按钮。同样,你可以替换色调而不影响饱和度或亮度(仅开启H),或者调整所有颜色而不改变它们的色调和饱和度(仅开启L)。开启O会将工具样式的全局不透明度应用到对象的全局不透明度上(但不是填充或描边的不透明度)。
8.7.4 使用说明
颜色画图在位图编辑器(如 GIMP 或 Photoshop)中与软画笔非常相似。然而,尽管工具本身作为画笔工作,它仍然将颜色应用到矢量对象上,这些对象的行为就像矢量对象一样。例如,如果你想改变画图中脸部的颜色,如果画中的手是脸部路径对象的一部分,那么这只手也会改变其色调,即使它位于你画图点的远处。尽管如此,即使有这种限制,颜色画图仍然允许你快速直观地进行调整,这在传统的矢量工具中会显得笨拙且缓慢。
包含图案或小独立对象散布的绘图特别适合使用调整工具进行颜色画图。以下是一些例子:
-
使用书法笔进行自由手绘,由许多单独的笔触组成。
-
从 Adobe Illustrator 的 AI 文件导入的渐变网格(B.6 AI (导入)")),Inkscape 将其渲染为小多边形的网格。虽然 Inkscape 目前还没有对渐变网格的直接支持,但在这样的网格上进行色彩上色几乎和直接上色一样好。
-
文本转换为路径,其中每个字母都是一个独立的路径(15.7 将文本转换为路径)。
-
使用克隆拼贴器制作的图案(16.6 拼贴克隆)。请注意,您需要取消原始对象上的填充和/或描边,并使用创建拼贴克隆对话框的颜色选项卡为克隆分配一些初始颜色——这将使它们可以在不取消链接的情况下用调整工具上色。
尽管如此,对色彩进行调整对于只有少数对象或单个对象的构图来说仍然很有用。与其他所有色彩选择方法不同,使用调整工具进行上色实现了色彩混合的隐喻,这对于艺术家来说比 RGB 滑块甚至 HSL 色彩轮更自然。例如,从一个纯蓝色的矩形开始;然后,使用色彩画笔选择不同的颜色,并使用最小的力量和笔压轻轻上色:加一点绿色,一点棕色,一点黄色,等等,直到你得到所需的混合色调。同样,通过添加白色或黑色,你可以使任何色调变白或变黑。
你还可以使用色彩调整来为整个绘图添加色调、变暗、变亮、饱和、去饱和或色彩抖动。只需选择所有图层中的所有内容(5.11 使用键盘快捷键选择),缩小视图,选择一个宽大的画笔宽度,使其覆盖整个绘图,并应用一点色彩调整(使用最小的力量),这样就会影响所有可见对象。
8.8 颜色扩展和过滤器
到目前为止,我们已经看到了 Inkscape 中相当多的样式设置命令和工具,每个都有自己的方法和能力。然而,每个都有一些缺点。特别是,填充和描边对话框和选定的样式指示器不能在不统一的情况下编辑许多不同的颜色。另一方面,调整工具可以同时调整多种颜色,但它要求你实际上在画布上绘画,因此对于某些任务来说可能既慢又不精确。
作为一种解决方案,扩展菜单中颜色子菜单的一组扩展允许您同时调整选择的所有颜色。这些命令影响填充和描边颜色,包括渐变停止的颜色,但不包括位图或图案。它们包括:
-
一套完整的HSL 调整(增加或减少色调、饱和度或亮度 5%)
-
更亮和更暗(亮度上下调整 10%)
-
去饱和扩展(将 HSL 饱和度设置为零)
-
灰度(均衡三个 RGB 通道;结果与去饱和度类似但有所不同)
-
负片(例如,将黑色转换为白色,黄色转换为蓝色等)
-
用于移除或交换红色、绿色和蓝色通道的命令
-
一个自定义命令,允许你设置自己的公式来修改颜色通道,如果需要,可以使用其他通道的值
另一种改变对象颜色的方法是使用 SVG 滤镜效果([第十七章](ch17.html "第十七章。滤镜")),特别是滤镜 ▸ 颜色子菜单中的预设滤镜,或者使用颜色矩阵原语的其他任何滤镜。与扩展相比,SVG 滤镜的优点在于它们是非破坏性的(对象的原始外观和颜色被保留,并且可以通过简单地移除效果来恢复)并且适用于所有内容,包括位图和图案。然而,滤镜会减慢渲染速度,并且创建自定义滤镜可能比较麻烦。
第九章. 笔画和标记
虽然在艺术作品中相对较少见,但绘制路径——轮廓、框架、箭头、连接器等——在技术图纸,如草图或流程图中非常常见。所有 SVG 样式属性中相当大的一部分控制笔画的显示效果,因此值得单独成章。
虽然在 SVG 中绘制相当丰富且适用于许多目的,但您可能寻找的一些功能可能根本不存在,或者只能通过变通方法获得。特别是,SVG 笔画始终具有固定宽度(它不能沿路径变宽或变窄);要模拟可变宽度笔画,请使用书法笔(14.3 书法笔工具)或路径效果(13.1 路径效果)。此外,虽然笔画可以有虚线图案(9.4 虚线图案)和附加到其节点上的标记(9.5 标记),但您不能使用刷子或重复图案来绘制路径,这些图案会跟随笔画的弯曲——尽管,再次强调,这可以通过路径效果(13.1.3 沿路径和弯曲的图案)实现,并且您始终可以应用标准的 SVG 矩形图案(10.8.1 创建图案)来精确绘制笔画,就像填充一样(然而,在这种情况下,图案只是叠加的;它不会被扭曲以跟随笔画的轨迹)。*
9.1 笔画宽度
笔画最重要的属性是其宽度。与 Inkscape 中的任何其他长度值一样,宽度可以用多种不同的单位来衡量。目前 UI 中有两个地方可以查看和更改所选对象的笔画宽度:在状态栏中的所选样式指示器(笔刷样本的右侧末端)和填充和笔画对话框的笔画样式选项卡:

图 9-1. 所选样式的笔画宽度指示器(左侧;右键单击以打开菜单)和填充和笔画对话框(右侧)
注意
如果笔画样式选项卡的内容被禁用(灰色显示),这意味着您所选的对象没有笔画颜料。要启用它,在同一个对话框中转到笔画颜料选项卡,并选择一种纯色或任何其他颜料作为笔画颜色。
在所选样式指示器中,更改笔画宽度的方法之一是直接右键单击旁边显示的数值笔画宽度,并从弹出的菜单中选择一个值。在同一个菜单中,您可以选择用于笔画宽度的单位;默认情况下为 px(SVG 像素)。
与通过颜色手势编辑填充或笔触颜色(8.5 选定样式指示器:颜色手势)类似,您还可以将选定样式指示器中的笔触宽度值拖放到画布中,以更改选择中的笔触宽度。将鼠标拖动到色板上方和 45 度线的左侧会使选定对象中的笔触变宽(最多是原始宽度的两倍);将鼠标拖动到色板下方和右侧会使笔触变窄(最多是原始宽度的一半)。例如,如果您从 1 像素的笔触开始,向上和向左拖动将得到 2 像素,而向右和向下拖动将得到 0.5 像素。这样,您可以在不打开任何对话框或菜单的情况下快速精确地调整笔触宽度。
在填充和笔触对话框中,有一个常规可编辑字段,您可以在其中输入任何值,以及一个单位选择器。
注意
在概要模式下(3.11 渲染模式),笔触宽度被忽略,所有对象都以一个屏幕像素宽的笔触显示,无论缩放如何。然而,这只是一个 Inkscape 特有的编辑便利性;在 SVG 中,笔触宽度始终以绝对单位指定,因此您无法使其与缩放无关。这可能在 SVG 的将来版本中发生变化。如果确实发生变化,Inkscape 最终也将支持这一点。
当选择包含具有不同笔触的多个对象时,所选样式指示器会平均具有任何笔触的对象的笔触宽度。例如,如果两个选定的对象中有一个有 3 像素的笔触,另一个有 1 像素,指示器将显示2(并且工具提示将说明这是一个平均值)。现在,如果您通过右键菜单设置任何宽度,则将分配给所有最初具有任何笔触的选定对象相同的宽度。(例如,如果一个对象有 3 像素的笔触而另一个没有笔触,它将显示3作为其笔触宽度,并在左侧的色板中显示不同,但您设置的任何新宽度将仅分配给最初有 3 像素笔触的对象。)
填充和笔触对话框的行为不同。当检测到选择中有不同的笔触宽度时,笔触宽度单位会切换到百分比单位(%),显示的值为 100%。现在,如果您将其更改为 200%,然后按
,选择中的每个笔触宽度都将比之前宽两倍。之后,所有不同的笔触宽度都将保持不同,显示的值将重置为 100%。
当然,在对话框中,您也可以将单位选择器切换到任何绝对单位,并将相同的笔触宽度分配给任何数量的选定对象。另一方面,即使您只选择了一个对象,您也可以切换到百分比单位,并指定一个相对于旧宽度的百分比宽度。
9.2 加入
笔划始终遵循路径,路径可以有尖锐的转弯,称为尖角。通常,尖角是一个不光滑的节点(12.5.5 节点类型),两个路径段在此处相交,但您甚至不需要节点来创建尖角;在贝塞尔曲线的中间创建一个尖锐的尖角也是可能的(13.1.7 斯皮罗样条)。
笔划在尖角处的表现由两个样式属性决定:接合类型和斜接限制。它们可以通过填充和笔划对话框中的笔划样式选项卡进行编辑,位于笔划宽度控制下方。三个可能的接合类型,由三个切换按钮表示,是斜接缝(默认)、圆接缝和斜接缝:
斜接缝
-
在这种接合中,尖角处的笔划外轮廓由两个直线片段继续,这些直线片段与接合两侧的笔划相切,直到这些直线交叉。结果,接合处装饰有一个尖锐的峰,称为斜接缝,随着接合处角度的减小,它变得越来越长、越来越尖锐,远远超出尖角节点的位置。
然而,这引出了一个新问题。斜接缝可以变得多长?很容易看出,当接合处的角度变为零(这是完全合法的)时,斜接缝应该是无限长的。这显然是不切实际的。为了处理这种情况,斜接限制控制允许您设置斜接缝的最大长度,单位为笔划宽度。例如,对于默认的斜接限制 4,任何小于 4 笔划宽度的斜接缝都保持尖锐的尖端,但一旦您减小角度使斜接缝超过这个长度,它将在距离接合处 4 笔划宽度的位置被切割(斜切)。
斜接缝
- 这种接合基本上与斜接缝相同,但斜接限制设置为 0。这意味着对于任何角度,斜接缝都会被一个斜切——垂直于尖角角平分线的直线——切断。
圆接缝
- 这模拟了用完美圆形笔绘制接合的效果。它与斜接缝相似,但不同之处在于,不是直线斜切,斜接缝被一个以尖角点为中心的圆形弧线切断。这个选项对于大部分曲线路径来说最为自然,偶尔的尖角如果不进行圆滑处理可能会显得不协调。

图 9-2. 填充和笔划对话框中的笔划接合控制
不同的笔划接合设置对笔划文本对象的影响可能最为显著:

图 9-3. 接合设置对笔划文本的影响
SVG
在 SVG 中,连接由 stroke-linejoin CSS 属性控制,该属性可以取 miter、bevel 和 round 等值。斜接限制存储在单独的属性 stroke-miterlimit 中。
9.3 帽
开放路径需要知道如何绘制描边的末端。对于帽,同样有三个选项可用,它们与三种连接类型有些相似:
端帽
- 垂直于描边方向,在路径的末端节点处直接切割描边。
圆形帽
- 在描边的末端添加一个半圆形块,使描边端部平滑地圆滑。
方形帽
- 在描边的末端添加一个半方形块。

图 9-4. 填充和描边对话框中的描边帽选项
无论是圆形帽还是方形帽都会使开放路径的长度增加其全宽度,并在每个端部添加一个半描边宽度的帽。只有使用端帽(这实际上意味着没有帽),路径的长度才与其端节点之间的距离相同。
连接和帽选项的效果在宽描边上最明显;对于渲染为 1 像素或更窄的描边,它们在视觉上几乎没有差异(可能除了长斜接之外)。
SVG
在 SVG 中,路径的描边帽由 stroke-linecap 属性控制,该属性可以取 butt、round 和 square 等值。
9.4 虚线图案
描边不需要从路径的起点到终点连续运行。SVG 允许您使用由任何长度间隔分隔的虚线图案描边路径。如果您知道如何编辑原始 SVG(例如,使用 Inkscape 的 XML 编辑器,4.7 XML 编辑器),您可以创建任何喜欢的图案。否则,您可以选择 填充和描边 对话框提供的许多预定义图案之一,如图 9-5 所示。
按照从最常见到最奇特的顺序大致排列,这些图案包括:
-
由点(即长度等于描边宽度的描边段)组成,间隔为 1、2、3、4、6 等等,直到 48 倍描边宽度(这意味着当您使描边更宽或更窄时,图案按比例缩放或缩小)的虚线图案。
![填充和描边对话框中的虚线图案]()
图 9-5. 填充和描边对话框中的虚线图案
-
由长虚线(1、2、3 等等,直到 24 倍描边宽度)和单描边宽度间隔组成的图案。
-
虚线和间隔长度相等的图案,从 2 到 24 倍描边宽度。
-
变化虚线和间隔宽度的图案:2:4、4:2、2:6、6:2、2:8 和 8:2。
-
长虚线后跟短虚线的图案。
-
等长虚线图案,虚线长度短于描边宽度,从 0.5 描边宽度降至 0.02 描边宽度(例如,一个“正方形”路径,其长度等于宽度,将会有 25 次 0.02:0.02 模式的重复)。请注意,使用这种高频图案可能会显著减慢 Inkscape 的速度。
虚线图案选择器旁边的可编辑字段允许您沿着路径移动所选图案,单位为描边宽度。
SVG
在 SVG 中,描边的虚线模式由stroke-dasharray属性指定。它可以取none(实线)或逗号分隔的值列表,其中每个奇数值表示虚线的长度,每个偶数值表示间隔的长度。例如,stroke-dasharray:2,1,0.5,1的指定意味着长度为 2 的虚线后面跟着长度为 1 的间隔,然后是长度为 0.5 的短虚线,再接着是长度为 1 的间隔(所有长度都是以描边宽度的单位)。
在填充和描边对话框中可用的预定义虚线图案列表存储在您的preferences.xml文件中,位于具有id="dashes"的group元素内。通过编辑此元素的子元素,您可以添加、删除或更改 Inkscape UI 中可用的图案。
注意,描边端点(9.3 端点)也会影响虚线。如果您将路径设置为使用圆形或方形端点,它们将被添加到每个虚线的两端。结果,每个虚线与使用默认平头端点时的长度相比,将增加一个完整的描边宽度。例如,具有圆形端点的 1:1 模式将失去所有间隔;相邻虚线的圆形端点,每个端点长度为 0.5 描边宽度,现在相互接触,如图图 9-6 所示。
因此,要创建一个沿着路径的圆形点图案,您需要创建一个具有零长度虚线和圆形端点的虚线图案。不幸的是,Inkscape 在填充和描边对话框中没有列出此类图案;您需要手动创建它,首先分配一个具有所需间隔长度的图案,然后编辑相应路径元素的style属性中的stroke-dasharray属性,将其虚线长度(第一个值)设置为 0。请注意,然而,如果没有圆形或方形端点,此类图案将使路径完全不可见(这也是它不在标准图案中的主要原因——记住默认端点设置是平头)。

图 9-6. 描边端点对虚线的影响
使用非常宽的间隔(如 1:48)的点模式的一个有趣用途是快速创建点的随机分布。使用铅笔工具(14.2 铅笔工具)绘制一个快速的螺旋形涂鸦,并将其分配一个 1:48 的虚线图案,使其变成一个看似不相连的点云。

图 9-7. 使用大间隔的虚线数组来模仿点的随机分布
此外,虚线图案的规律性与螺旋形状相得益彰——螺旋形状也是规律的,但由越来越长的转弯组成(11.6 螺旋)。等距虚线和逐渐发展的路径的相互作用可以产生有趣的图案:

图 9-8. 虚线螺旋是一种艺术形式。
9.5 标记
标记是附加到路径上的任意对象(甚至是一组对象),在路径的一些节点上作为路径的一部分显示(12.1 路径的解剖)。路径可以在其起始节点、中间(中)节点和末端节点上有三种不同类型的标记。每个标记副本都定位在节点上,并旋转以跟随该节点处的路径方向。标记最常见的使用是在图表和流程图中创建箭头。
在填充和描边对话框的描边样式标签页底部有三个大下拉列表,您可以在其中为选定的路径选择起始、中间和结束标记。

图 9-9. 选择路径的标记
这三个列表显示了所有相同的标记(换句话说,你可以在任何位置使用任何标记),但是预览缩略图显示了它们应用于水平直线路径的开始、中间和末端,因此你可以了解标记在实际路径上的外观。
让我们看看 Inkscape 标准列表中的标记有哪些:
箭头
-
箭头有两种类型:一种是带有直线背部的箭状,另一种是三角形,箭头后面有一个圆形凹弧。每种类型的箭头都有三种尺寸:大、中、小;每种尺寸都有两种方向:开始和结束。
例如,如果你想使箭头指向路径外部,你应该选择Arrow1Mstart(第一种类型,中等大小,起始方向)作为起始标记,并选择Arrow1Mend作为结束标记;然而,你也可以反转这个选择,使箭头从路径两端向内指向。或者,你可以为所有三个位置选择Arrow1Mend,使路径上的所有箭头都指向路径的末端(有关如何区分路径的起点和终点,请参阅12.1.1 Subpaths)。*
箭头尾部
- 箭头尾部标记仅有一种大小(与大型箭头匹配)和一种方向(作为一个端点标记是有意义的,即指向路径的起始点)。
距离测量标记
- 距离测量标记只是箭头(与Arrow1M相同形状,略小)在尖端添加了一条垂直的直线。有两种方向:DistanceStart作为起始标记,DistanceEnd作为结束标记,这是你通常需要用到的。
几何形状
- 有一个几何形状标记的集合:圆形点、正方形、菱形(正方形旋转 45 度)、等边三角形、直线停止、填充和空半圆标记。大多数都有实心黑色和白色填充的变体。就像箭头一样,这些标记有三种大小(大、中、小);一些还有起始和结束方向(尽管对于对称标记如菱形,方向仅在标记相对于其节点的位置上有所不同)。三角形标记的起始和结束变体可以用作另一种箭头形状。
其他标记
- 有几种花哨的标记,其中最显著的是剪刀(将其分配给中间标记以创建典型的“切断线”),以及“无限线”省略号结尾。
如果你的文档已经使用了某些标记,这些标记将被添加到下拉标记菜单的顶部,与 Inkscape 提供的标准标记分开。要从路径中删除标记,从列表中选择无。
SVG
当你将一个标记分配给路径时,Inkscape 会将标记的副本放入文档的 defs (A.4 Defs, View, and Metadata),并使路径引用defs中的标记。标记菜单中分隔符上方的标记列表仅仅是defs中的标记列表;如果你想要删除不再使用的某些标记,请使用文件 ▸ 真空 Defs命令。
9.5.1 中间标记和节点
起始和结束标记很简单:它们在路径上的位置永远不会令人惊讶(尽管有时它们的朝向可能会,如果结束节点有一个非常短的贝塞尔手柄,这对手势曲线的形状影响很小,但可能会在这个节点以一些意想不到的方向旋转标记)。中间标记更有趣:它们位于路径的中间节点(12.1 路径的解剖结构)上,这些节点的位置可能不是你需要的,甚至可能不是你预期的。
一个简单的用例是由直线段组成的路径(没有贝塞尔曲线)。在这样的路径上,中间标记将在角落处显示。使用没有结束或开始变体的标记,因此它们在节点周围对称定位——例如,点或方块:

图 9-10. 路径接合处的中间标记
有时,你可能想要用中间标记均匀地“填充”路径,类似于虚线图案沿路径均匀重复的方式。对于简单的直线路径来说,这是微不足道的,你可以添加或删除所需数量的中间节点,而不会改变直线形状。然而,在更复杂的路径中,某些节点对于路径保持其形状可能是必要的,你不能在不扭曲该形状的情况下沿着路径移动这些节点。另一方面,你也不能选择不将这些节点应用于标记;在 SVG 中,中间标记适用于所有中间节点,无一例外。因此,可能无法完美均匀地沿路径分配标记;然而,你想要的标记之间的间隔越短,路径越简单,这种不可避免的非均匀性就越不明显。
你如何在不改变路径形状的情况下添加节点,以便使用中间标记?可以在节点工具(12.5.3 删除和创建节点)中通过双击或
-点击路径上的任何位置添加一个新节点。然而,为了均匀分布节点,另一个快捷方式更有用:
在所选节点之间的每个段落的中间创建一个新节点,并将新节点添加到节点选择中。
例如,选择两条节点路径的两个节点并按
添加一个新节点在中间;现在您有三个节点被选中,它们之间有两个段,因此再次按
添加两个更多节点;另一个
添加四个更多节点,依此类推。在这个简单的情况下,所有节点将始终均匀分布;然而,如果您的路径已经有一些中点节点,选择所有节点并重复按
将在最初节点较多的区域添加更多节点,如图 9-11 所示(Figure 9-11 and by using the Add Nodes extension (right)")).
创建均匀分布节点的另一种方法是添加节点扩展(13.3 路径扩展)。在其中,您指定路径上节点之间的最大距离(以px单位)。在结果中,现有节点可能比这个距离更接近它们的邻居,但没有任何节点可以更远;节点之间的段将由新节点以指定距离均匀填充。
要删除单个节点,在节点工具中点击它,或者选择它并按
(12.5.3 删除和创建节点)。删除所有非必要节点(仅为了中点标记且不影响路径形状的节点)的一个好方法是使用简化命令(12.3 简化)。当然,简化并不能真正知道哪些节点是必要的,哪些不是;它试图猜测——并且通常表现良好,尽管无法避免不希望的节点和一些形状扭曲。

图 9-11. 通过重复按
(左侧)和使用添加节点扩展(右侧)添加中点节点
9.5.2 标记着色
通常,图表和流程图中的连接线是黑色的。因此,Inkscape 提供的所有标准标记要么是实心黑色,要么是黑色带白色填充。不幸的是,即使您为带有标记的路径分配不同的描边颜色,此颜色也仅适用于描边本身,并且不会影响标记。红色描边带黑色箭头很少是您所想的。
SVG
这个问题根植于 SVG 本身。在 SVG 1.1 中,没有方法可以强制标记继承它们应用到的路径的样式参数。然而,SVG 1.2 中计划了一个解决方案,因此最终将支持它,这将解决 Inkscape 中的此问题。
对于这个问题,最简单(尽管仍然有些笨拙)的解决方案是 Extensions 菜单中的扩展 Color Markers to Match Stroke。只需选择路径后调用它,它就会用路径的当前描边颜色绘制标记。(如果你想在标记上完成更复杂的绘画工作,请参阅下一节,了解如何将标记转换为常规可编辑对象,然后再转换回来。)
描边样式和标记样式的不同步也有其优点。有时你可能只想将路径用作中间标记的不可见字符串——换句话说,看到标记但隐藏描边本身。这很容易:首先将标记分配给描边路径,然后删除描边(通过在选定的样式指示器中的描边样本上中间点击,8.4 选定样式指示器:绘画命令)。
注意,标记始终在 z 轴顺序上位于其描边之上。因此,如果你的描边颜色与标记不同,只有在标记透明时,描边颜色才会从下方透过。
9.5.3 创建新标记
标记不一定是单一的颜色填充的对象。它可以由任意数量的对象组成,这些对象可以是分组或未分组的,具有任何绘画、不透明度或甚至模糊属性——换句话说,Inkscape 可以绘制的任何内容都可以成为路径上的标记。将此类复杂标记应用于具有许多附加节点(9.5.1 中间标记和节点)的路径可以产生惊人的构图。然而,要利用这种多功能性,你需要知道如何从对象创建标记。
通常,这就像选择对象或对象,然后从 对象 菜单中选择 对象到标记。选定的对象会消失,但如果你现在选择任何路径,打开 填充和描边 对话框,转到 描边样式 选项卡,并打开标记列表,你将在顶部看到你的新标记,在列出此文档标记的部分。(你可能需要关闭并重新打开 填充和描边 对话框以刷新标记列表。)
当创建新的标记时,Inkscape 假设原始对象的方向与它们在从左到右的水平路径上应有的方向一致。例如,如果你创建了一个打算用作端标记的新箭头,在将其转换为标记之前,请将其水平指向右侧。
与标准标记类似,用户创建的标记会随着你更改描边宽度而上下缩放。它的初始大小(你将其转换为标记的对象的大小)对应于 1 像素描边。
每个标记都有一个锚点——该点将与该标记附加的节点重合。当你创建一个新的标记时,Inkscape 使用(第一个)选定对象的旋转中心作为该锚点。默认情况下,旋转中心位于对象的边界框中心(4.2 边界框),这意味着新创建的标记将围绕其节点居中。如果你移动旋转中心,例如,到对象的某个角落,新标记将通过那个角落接触其节点。

图 9-12. 从选定的对象创建新的标记
我们能否做相反的事情,将路径标记转换为可编辑的对象(可能是在编辑后有意将其再次转换为标记)?是的,尽管这涉及到破坏标记应用到的路径(因此你可能想要先复制路径)。这是通过从路径菜单中选择描边到路径命令来完成的。它将描边转换为填充路径,如果原始路径有标记,则将转换后的路径与表示以前标记的对象分组。只需取消分组,选择一个以前的标记,将其旋转到默认方向,并根据需要编辑它。
注意
你可以将克隆体(第十六章)转换为标记,然后继续编辑原始对象,标记会实时更新。
9.5.4 标记杂项
SVG 标记还有一些其他选项,这些选项在 Inkscape UI 中尚未提供,但可以通过手动编辑 SVG 来访问,最好是在 Inkscape 的 XML 编辑器中(4.7 XML 编辑器)。首先,你需要定位文档中的defs中的标记对象。选择使用此标记的对象,并在其style属性中找到相应的标记属性——例如,marker-start:url(#Arrow1Lstart)。注意它引用的 URL(在我们的情况下,Arrow1Lstart)。现在转到根svg下的defs元素,并找到具有id="Arrow1Lstart"的marker元素。通过编辑该marker元素,你可以做以下事情:
-
默认情况下,标记会旋转以沿路径方向定位。如果你想让你的标记无论路径如何在这个点都保持相同的方向,请移除
orient="auto"属性。 -
如果你不希望标记在改变笔触宽度时上下缩放,请将具有值
userSpaceOnUse的属性markerUnits添加到marker元素中。
第十章. 梯度和模式
使用梯度是摆脱单调的纯色填充的平淡外观的最简单方法,因此,梯度是矢量图形最重要的功能之一。设计师可以使用精心安排的梯度来创建令人惊叹的复杂和逼真的艺术作品。尽管梯度具有多功能性,但创建和编辑梯度相对简单,渲染速度快,并且在 SVG 软件中几乎得到普遍支持——例如,对于模糊等 SVG 滤镜来说,这并不完全正确(17.1 模糊)。
基本上,梯度是两种或多种颜色之间的平滑过渡。颜色还包括不透明度级别;这意味着您可以将不透明的红色渐变到透明的红色,中间有半透明的红色色调。SVG 支持两种类型的梯度:线性(沿直线)和椭圆形,或径向(从中心向外,可能具有不等长的轴和非中心焦点点)。
10.1 梯度工具
梯度工具(
或
)是您在对象上创建新梯度的位置。它也是编辑现有梯度的最佳环境——尽管一旦创建,选定的对象上的梯度可以通过拖动句柄和分配颜色来编辑,不仅可以在梯度工具中,还可以在节点工具(12.5 节点工具)、所有形状工具(第十一章)和滴管工具(8.6 滴管工具)中进行编辑。尽管如此,梯度工具仍提供了一些针对梯度的编辑便利。
创建一个新梯度非常简单:确保您已经选定了必要的对象或对象,并在画布上拖动。您将看到随着拖动鼠标,实际梯度会出现在并跟随鼠标,您还会看到一个由线条连接的句柄(画布上的小控件)系统。
您不需要拖动选定的对象——梯度句柄可以完全位于它们应用的对象之外。您可以选中任意数量的对象,并通过单次拖动将它们全部用相同的梯度(更精确地说,是多个但重合的梯度)着色。另一种快速创建跨越整个对象的梯度的方法是使用梯度工具双击该对象。
要使用最常用的对象选择快捷键,您不需要切换到选择工具;点击以选择,
-点击以选择下方,以及
-点击以将所有对象添加到选择中,这些操作在梯度工具中同样适用。
渐变可以应用于对象的填充、它们的描边,或者两者都应用(8.1.1 绘画)。在 Inkscape 中,描边渐变使用绿色连接线连接手柄,而填充渐变使用蓝色线条:

图 10-1. 对象填充和描边的不同渐变
如果你正在为一个之前使用纯色油漆的对象创建渐变,渐变将从你开始拖动的对象的完全不透明到完全透明的颜色版本。例如,如果你有一个选中的黄色矩形,并从该矩形开始拖动,你将用从不透明黄色到透明黄色的渐变填充对象。然而,如果你有一个蓝色填充的对象并从它开始拖动,你也可以用不透明蓝色到透明蓝色的渐变填充它。换句话说,你创建的渐变应用于选定的对象,但使用的颜色可能来自任何对象,无论是否选中,只要是从该对象开始拖动。(如果你不希望这样,不要担心——创建渐变后更改渐变颜色非常容易。)
类似地,如果你开始拖动的地方的对象已经有一些渐变,工具将只为选定的对象重新绘制它,保留该渐变的颜色(即保留渐变定义,10.2 渐变定义)。如果你从一个空空间开始拖动而不是从任何对象开始,新的渐变将使用最顶部的选中对象的颜色或渐变。
在许多从对象中移除渐变的方法中,可能最简单的是确保没有选择任何渐变手柄(所有都是白色,不是蓝色),然后点击调色板上的任何颜色。对象将被纯色填充,替换掉它之前拥有的任何渐变。
注意
渐变和任何其他油漆(8.1.1 绘画)都不能应用于位图对象(第十八章);如果你想要将透明度渐变应用于位图,请使用蒙版(18.4 剪裁和蒙版)。对于克隆(第十六章)也是如此,除非克隆原始的油漆未设置**。
让我们现在更详细地看看 Inkscape 可以创建的两种渐变类型:线性渐变和椭圆渐变。
10.1.1 线性渐变
线性渐变沿着一条直线进行,其中两端(以及可能的一些中间点)被分配了特定的颜色和不透明度。物体上颜色区域之间的过渡总是垂直于渐变线。这是渐变工具创建的默认渐变类型;工具的线性渐变模式由工具控制栏中的第一个切换按钮设置,如图所示:

图 10-2. 通过拖动和双击创建线性渐变
注意
在所选样式指示器中,线性渐变用字母 L 表示,后面跟着渐变样本。
线性渐变有两个可以自由拖动的句柄:一个位于渐变线起点的正方形句柄和一个位于渐变线末尾的圆形句柄。通过拖动它们,您可以改变渐变的方向和长度(注意,当您拖动句柄时,渐变会实时重新绘制)。
按下
后,绘制新的渐变或拖动现有渐变的句柄会使渐变线自动对齐到角度增量,默认为每 15 度(此值可以在Inkscape 首选项对话框的步骤选项卡中更改,比较6.3 选择器:旋转和倾斜)。在线性渐变模式下双击对象将创建一个通过对象边界框中心的水平线性渐变。
10.1.2 椭圆渐变
要将渐变工具切换到创建椭圆渐变而不是线性渐变,请按工具控制栏中的第二个切换按钮(在画布上方)。现在,如果您在画布上拖动并选择了一些对象,将为它们创建一个椭圆渐变:

图 10-3. 通过拖动和双击创建椭圆渐变
注意
在所选样式指示器中,椭圆渐变用字母 R (代表径向)表示,后面跟着渐变样本。
椭圆渐变至少有三个可拖动的句柄——中心(正方形句柄)和两个垂直的半径(圆形句柄)。这使得可以移动、拉伸、挤压或旋转此类渐变;您可以将它变成从圆形到狭窄的椭圆,旋转任何角度。移动中心句柄将整个渐变(即所有句柄)移动;移动半径将渐变拉伸和旋转,而不会移动中心。两个半径始终保持垂直。与线性渐变模式一样,按下
时拖动半径会自动对齐到 15 度角度增量。
当您开始拖动以创建新的渐变时,您正在拖动其中一个半径;另一个半径将被创建,其长度等于所选对象高度的一半。这意味着如果您从对象的中心开始拖动,水平拖动到其边界框的右边缘,椭圆将整齐地内嵌在边界框内。通过双击对象也可以简单地达到相同的效果。
注意
如果您需要一个对称的“双线性”渐变,其轮廓像山一样,最简单的方法是通过一个椭圆渐变,其中一个半径被拉得很长,拖动到对象边界之外。然后,拉伸椭圆的中心部分几乎无法与一对方向相反的线性渐变区分开来。
椭圆渐变还有一个第四个,通常隐藏的,控制柄——焦点。这是具有渐变中心停止点颜色和透明度的点。通常,它与中心控制柄合并并一起移动,产生一个完美的对称渐变。然而,你可以通过将焦点——用一个 X 形控制柄表示——从中心拖离中心控制柄来分离它
。这会创建一个非对称的椭圆渐变,如图图 10-4 所示。要将焦点合并回去,只需将其拖动到中心控制柄足够近的位置,它就会自动对齐。

图 10-4. 通过移动焦点创建非对称椭圆渐变
10.2 渐变定义
每个渐变都有一组停止点,每个都有自己的颜色和透明度值。最少的停止点数是两个端点停止点,在这种情况下,它们应用于渐变线的两端(线性)或椭圆的中心和边缘(椭圆)。然而,渐变也可以有任意数量的中间停止点,每个中间停止点除了自己的颜色和透明度外,还有一个位于端点停止点之间的位置(例如,中间停止点可能在渐变的 0.5 处——即在端点停止点之间正好居中)。对于每个渐变,其所有停止点及其颜色、透明度和位置的完整集合被称为渐变定义。
渐变定义是文档范围内的资源。这意味着您创建或编辑的任何渐变都会将其定义添加到文档中所有渐变定义的列表中。之后,您不仅可以将该定义分配给原始渐变,还可以将其分配给文档中的任何其他渐变。渐变工具控制栏中的下拉列表显示文档中所有渐变定义的色卡:

图 10-5. 选择渐变定义
填充和描边对话框中可用相同的梯度样本列表。当您选中一个或多个具有梯度的对象时,从列表中选择一个定义将分配给所有选定的梯度。这不会改变端点手柄的位置,但会替换颜色,并可能添加或删除中间停止点。
注意
截至本文撰写时,尚无方法在文档之间保存和重用梯度定义,但这是未来版本计划的功能之一。此外,无法通过 XML 编辑器之外的方式重命名梯度从其默认的数字名称。
您可以通过按
来反转所选对象梯度的颜色定义。例如,如果您有一个中心为不透明蓝色、边缘为透明黄色的椭圆形梯度,在按下
之后,您将得到中心为透明黄色、边缘为不透明蓝色的梯度。(对于线性梯度,这相当于将梯度线旋转 180 度,但椭圆形梯度不能通过移动其手柄简单地反转,这使得
特别有用。)
顺便说一下,如果您想以相同的方式更改梯度中所有停止点的透明度,您不需要分别调整每个停止点的透明度。相反,只需调整使用梯度的对象的主透明度(8.1.2 透明度)。
10.2.1 分享梯度定义
当复制粘贴或复制具有梯度的对象时,对象的副本会自动获得原始梯度的副本,因此修改它不会影响源对象的梯度定义。此行为由Inkscape 首选项对话框杂项选项卡上的防止共享梯度定义复选框控制。默认情况下是勾选的;如果您取消勾选它,则复制粘贴、复制、粘贴样式以及通过梯度工具控件将现有梯度定义显式分配给对象将导致共享的梯度定义。当两个对象共享一个梯度定义时,改变一个对象上梯度(但不变动端点手柄坐标)的颜色或中间停止点位置会影响使用相同定义的所有其他对象。
文件菜单中的Vacuum Defs命令会移除文档中可能残留的任何未使用的梯度定义,包括其他一些内容。这是一个整理文档和稍微减小文档大小的不错方法。
10.3 梯度重复
正如我们所见,渐变处理器不需要与它们应用的对象边缘相一致;它们可以放置在画布上的任何位置,对象将仅显示其范围内发生的渐变部分。然而,这却引出了一个问题:将使用什么来绘制那些未被渐变覆盖的对象部分——那些超出线性渐变末端或椭圆边缘之外的部分?
默认情况下,这些区域将由第一个或最后一个渐变结束点的纯色和不透明度来绘制。例如,如果您有一个带有半径处半透明白色的小椭圆渐变,那么渐变之外的对象其余部分也将是半透明白色。然而,这并非唯一可能性。
选择一个带有渐变的对象(但请确保没有处理器被选中),然后在填充和描边对话框的重复列表中,选择反射或直接而不是默认的无。这些选项强制渐变无限期地重复,要么不变(直接),要么每第二个副本进行反转(反射)。这是在对象上创建各种条纹图案的简单方法,如图 10-6 所示。

图 10-6. 使用渐变重复选项
10.4 处理器
处理器是画布上与渐变停止点相对应的控制。在渐变工具中,它们不仅可以自由拖动,还可以选择和绘制,与选择的对象绘制方式相似。
10.4.1 选择
被选中的处理器是蓝色,而未被选中的处理器是白色。选择处理器最简单的方法是点击它;您还可以使用
-点击来添加处理器到选择或从选择中移除它,或者使用
-拖动多个节点以橡皮筋方式选择它们(比较5.7 使用橡皮筋选择)。通过拖动创建新的渐变后,您所拖动的处理器将保持选中状态。
与选择工具类似,在渐变工具中,您也可以使用键盘选择处理器:
和
选择下一个和上一个处理器(或如果没有选择之前,选择第一个和最后一个),
选择所选对象中的所有处理器,而
取消选择任何处理器(但保留对象选择;第二个
取消选择对象)。
注意
注意状态栏(2.6 选择):它始终显示有关所选渐变控制柄(s)以及它们所属的对象(s)和渐变类型的有用信息。
10.4.2 绘画
你可以使用所有用于更改对象样式的相同方法为选定的渐变控制柄或控制柄分配任何颜色或透明度级别(8.1 样式基础)。当选择一个控制柄时,调色板、填充和描边对话框、所选样式指示器中的颜色手势和命令(8.1.1 绘画)、粘贴样式命令,甚至滴管工具都在选定的控制柄上工作,而不是在选定的对象上。图 10-7 显示了示例。
与对象不同,渐变停止点没有填充或描边(尽管渐变本身可以应用于填充或描边)。因此,当你选择一个或多个停止点时,状态栏中的样式指示器会显示停止点在填充和描边样本中的颜色;这可能不是完全合乎逻辑的,但很方便。渐变停止点的不透明度通过主不透明度控制(在状态栏中标为O:)反映出来。然而,显示的描边宽度始终是对象的宽度(如果有描边),而不是停止点的宽度,因为停止点不能有任何描边。

图 10-7. 为选定的渐变控制柄分配颜色
如果你希望渐变的一端平滑地融合到其他对象中,使用滴管工具特别方便;确保选择相应的控制柄,切换到滴管,然后点击你希望它融合的区域。(注意,切换到滴管工具时,你离开了渐变工具,但这不是问题;像许多其他工具一样,滴管显示渐变控制柄,甚至保留控制柄选择。在滴管中你不能选择对象,但你可以切换渐变控制柄的选择。)
当选择多个渐变控制柄时,选中的样式指示器显示所选停止点的平均颜色和不透明度(这与选择多个对象时的行为相同,8.2.1 RGB)。
当至少有一个手柄被选中时,复制命令(
)会将单个选中手柄的样式(颜色和透明度)或多个选中手柄的平均样式复制到剪贴板。这意味着您可以在渐变停止之间复制和粘贴样式——选择一个手柄,复制,选择其他一些手柄,然后粘贴样式(
)。如果您选择多个手柄,这允许您通过复制和粘贴它们的样式快速平均它们的实际颜色和透明度。
10.4.3 移动、合并和吸附
您可以通过直接用鼠标拖动或使用箭头键(
用于标准 2 像素位移的十倍,
用于像素大小位移,
用于 10 像素位移)来移动选定的渐变手柄。自然地,端点手柄(线性渐变的端点,椭圆渐变的半径)可以任意移动,而中间手柄只能沿着渐变线移动。(不要将 中间 手柄与椭圆渐变的 中心 手柄混淆;后者尽管位于椭圆的中心,但它代表渐变定义的 端点。)
如果您选择了多个对象,所有具有渐变的对象都将显示其手柄(无论它们是线性还是椭圆,是在填充还是在描边上),并允许您同时编辑其中的任何一个。这开辟了有趣的可能性。例如,您可以选择所有线性渐变的端点并将它们平行移动。或者,您可以按
选择所有渐变中的所有停止点,并使用箭头键将整个渐变集作为一个整体移动。
此外,任何数量的端点手柄(但不是中间停止)都可以合并。只需将一个手柄移动到另一个手柄足够近的位置,它就会吸附并合并。(状态栏将报告此类手柄的合并状态,例如 手柄合并 2 个停止点。)现在,当您拖动此类合并手柄时,它将同时影响它所属的所有渐变。要分离合并的手柄,使用
从合并手柄拖动。
例如,您可以合并两个对象的椭圆渐变中心,合并一个椭圆手柄与另一个对象的线性手柄,合并多个对象的三个椭圆手柄,或者合并同一对象填充和描边的渐变:

图 10-8. 合并渐变手柄
当您拖动以创建一个新渐变,并且已选择多个对象时,您得到的是一个看起来和表现像一个应用于多个对象的单一渐变,但实际上是许多渐变,它们的句柄被合并在一起。
如果两个句柄有不同的颜色或不透明度,合并后它们将保持不同。然而,如果您为合并的句柄分配颜色或不透明度,它将应用于所有共享此合并句柄的渐变停止点,使它们的样式相等。如果您想在未取消合并的情况下更改合并句柄的样式,如果合并的句柄属于不同的对象,则可以进行此操作:简单地将所有内容(包括句柄和对象)取消选择,然后仅选择您想要重新着色的对象。
当鼠标拖动对象时,该对象的渐变句柄会自动捕捉到对象的边界框边缘、其中心轴及其延续部分(除了捕捉到常规捕捉目标,如参考线或网格之外,7.3 捕捉)。这使得将渐变句柄放置在对象中心变得非常容易。此外,当拖动句柄或创建渐变时,按
可以将渐变角度捕捉到水平、垂直和介于两者之间的 15 度增量:

图 10-9. 捕获渐变句柄
10.5 多阶段渐变
至少在两个端点之间有一个中间停止点的渐变被称为 多阶段 渐变,因为它包含多个颜色过渡。在这种渐变中,每个中间停止点都有自己的颜色和透明度,但其位置限制在端点之间的中间位置。在 Inkscape 中,中间停止点由一个菱形句柄表示,如图 7 页上的颜色插入图所示。
10.5.1 创建中间停止点
要在渐变中添加一个中间停止点,请双击或点击
渐变线上的任何位置。新停止点将自动获取点击点的颜色和透明度,这样渐变的外观就不会改变。
此外,您还可以 拖放 从调色板中的颜色到渐变线。将颜色放在现有手柄上会改变该停止点的颜色;将其放在渐变线上的其他任何地方会 创建 一个具有该颜色的新停止点。另外,当两个或更多相邻手柄被选中时,按下
会在所有选中停止点间隔的中间添加新停止点(这与节点工具中的节点操作非常相似,12.5.3 删除和创建节点)。通过
添加的新手柄包含在手柄选择中,因此重复按下
会添加越来越多的手柄;如果您开始时选中了两个手柄并按下
n 次,您最终将得到总共 2^n 个手柄。
要删除所有选定的停止点,只需按下
。单个停止点(无论是否选中)也可以通过
-点击它们来删除。
删除不仅限于中间停止点;您还可以删除端点,这样最近的中间停止点就变成了渐变的新端点。如果您在线性渐变中删除端点或在椭圆渐变中删除半径手柄,剩余的手柄不会移动,因此渐变跨度会变短。如果您删除椭圆的中心手柄,其最近的手柄会移动以成为新的中心。最后,如果您在两停止点渐变中删除端点,渐变会消失,对象会使用最后一个剩余停止点的平面颜色和不透明度进行着色。
在选中一些中间停止点时按下
会 简化 选中部分的渐变,移除那些不会在渐变外观上引起明显变化的停止点(比较 12.3 简化)。特别是,通过双击或按下
创建的新停止点最初不会改变渐变的外观,简化会删除自创建以来未移动或重新着色的所有冗余停止点。(您可能需要重复按下
以删除所有不必要的停止点。)
10.5.2 移动中间停止点
自然地,中间停止点的手柄只能沿着渐变线使用箭头键拖动或移动,距离其相邻手柄不超过。使用
拖动手柄会使它精确到可用范围的 1/10 分数——也就是说,它会精确到 1/10、2/10、3/10 等等,这是其相邻之间的跨度。
两个或多个中间停止点可能 重合。如果它们有不同的颜色,该点的渐变将会有一个尖锐的颜色边界。例如,添加两个中间停止点,一个涂成绿色,另一个涂成蓝色,然后将绿色的一端拖动到蓝色的一端,以在渐变中创建一个尖锐的绿-蓝边界。
按住
并拖动多个选定的手柄会使每个手柄移动一段距离,这个距离取决于该手柄与被拖动手柄的接近程度。你抓住并拖动的手柄会移动整个距离,但所有其他选定的手柄都会落后,距离拖动手柄越远,落后得越厉害(这些距离使用平滑的钟形曲线计算,类似于节点雕刻功能中的节点雕刻,12.5.7.2 节点雕刻)。
这有什么用?Inkscape(以及 SVG 通常)缺少的一个渐变功能是 轮廓,这意味着你不能使颜色之间的过渡加速或减速(即,偏向两个相邻停止点之一)而不是线性。然而,通过
拖动中间停止点可以轻松地 近似 这样的非线性轮廓。例如,如果你有一个两停止渐变,你想根据曲线轮廓来塑造它,选择渐变的两个端点,按
几次以添加多个中间手柄,然后通过
拖动中间的一个手柄来平滑地重塑渐变:

图 10-10。通过拖动中间停止点来近似轮廓渐变 
10.6 使用渐变变换对象
通常,当你变换(即移动、缩放、旋转或倾斜,见第六章)使用渐变填充或描边的对象时,渐变手柄会与对象一起变换,因此渐变会牢固地保持在原地。然而,选择工具栏上的第三个 影响 按钮可以改变这一点(6.10 哪些变换会影响)。
如果你取消选中此按钮(默认选中),渐变将相对于画布保持固定,无论你如何变换使用渐变的对象。这可能在例如你想将对象放大或缩小以匹配它使用的椭圆渐变大小时非常有用。
10.7 渐变技巧和示例
如果你想要“渐隐”或“柔化”对象的边缘,你不必(实际上,通常你不能)向其应用颜色到透明的渐变。解决这一需求的一种方法是通过使用蒙版(18.4 剪辑和蒙版);然而,在许多情况下,如果对象下面的背景是纯色,一个与背景颜色相同的叠加对象——一个着色器——具有不透明到透明的渐变将更容易创建和维护。这种方法对于需要作为一个组柔化的多个对象、对于需要柔化多个侧面、对于已经具有不同渐变填充的对象或位图或图案填充的对象同样有效。
在这个例子中,四个渐变着色器被放置在位图的边缘上,以在白色背景上柔化边缘:

图 10-11. 使用线性渐变着色器柔化矩形对象的边缘
当使用着色器时,通常你不需要移动渐变手柄来将渐变放置到你需要的位置。相反,只需使用该渐变变换整个着色器对象。在 图 10-12 中,渐变工具只使用了两次:在两个椭圆上创建不透明到透明的椭圆渐变,一个白色,一个黑色。然后,总共使用了 29 个这些着色椭圆的克隆(链接副本),它们以不同的比例和旋转方式缩放,所有这些都有不同的降低主不透明度级别,用于为卡通面部添加深度。

图 10-12. 使用椭圆渐变着色器为卡通添加深度
黑色(或任何其他深色)着色器的一个问题是它们在边缘处通常看起来过于生硬,过于明确,尤其是如果你使它们足够不透明的话。这是由于默认的渐变配置文件是线性的,因此可以通过添加中间停止点并通过
-拖动(10.5.2 移动中间停止点)来“配置”它们来修复。另一种有用的方法是稍微模糊着色器,使其边缘不那么明显(17.1 模糊)。
然而,也许这个问题的最简单解决方案是绘制一个渐变,而不是从不透明黑色到透明黑色(这是默认设置),而是从不透明黑色到透明白色(或者,如果你将在某些其他浅色上使用着色器,则到该浅色的透明版本)。这会极大地改变感知到的渐变配置文件,使其边缘更加平滑和自然。缺点是,这可能会使椭圆形渐变的中心过于尖锐,这通常可以通过稍微放大着色器对象来简单地修复。

图 10-13. 通过在暗着色器边缘使用完全透明的光颜色来更改渐变配置文件
在设计中使用渐变通常涉及使用半透明渐变叠加多个对象。颜色插页中的图 8 展示了一个彩色水滴或玻璃按钮,实际上是一组六个具有各种椭圆形渐变的对象。
调整工具的颜色模式(8.7 颜色调整)不仅可以绘制或随机化纯色填充或描边的颜色,还可以在渐变中绘制或随机化颜色。对于渐变,该工具不仅考虑具有渐变的对象的位置,还考虑每个渐变停止点相对于画笔的位置。
例如,你可以仅通过用足够小的画笔覆盖带有蓝红渐变的物体的蓝色端来重新着色该物体的蓝色端,这样就不会触及红色。颜色调整不会在之前使用纯色填充的对象上创建渐变,也不会添加停止点,而只是绘制绘图中原有渐变的停止点。
作为示例,让我们以一个简单的不透明黑色到透明黑色的渐变为例,通过反复按
添加许多中间停止点,并使用 Jitter Colors 模式中的调整笔刷在物体上绘制以随机化停止点的亮度,仅启用 L 通道。然后,对另外两个平滑的原始渐变副本重复相同的操作,并将它们全部旋转后叠加在一起。得到的纹理是一个相当逼真的雾中海景:

图 10-14. 使用调整工具随机化渐变
10.8 图案
图案 是一种绘画类型(8.1.1 绘画),其中对象的填充或描边由重复的 瓦片 组成。瓦片可以是任何东西:单个对象(例如,位图)或一组对象,使用任何样式属性或 Inkscape 技术。在这方面,图案是一个非常丰富和灵活的功能。然而,在另一方面,SVG 中的图案相当有限:它们只能使用没有旋转或反射的简单矩形网格瓦片(例如,与实现 17 种不同对称类型的克隆瓦片器相比,16.6 瓦片克隆)。
您不能在对象上同时使用渐变和图案;它们是两种不同的绘画类型。如果您想在具有图案的对象上使用透明渐变,请阅读有关着色器的 10.7 渐变技巧和示例 或有关蒙版的 18.4 剪辑和蒙版。
10.8.1 创建图案
与梯度不同,Inkscape 中没有专门用于创建图案的工具。相反,只需选择您想要转换为瓦片的对象,然后从 对象 菜单中选择 图案 ▸ 对象到图案 (
)。
选定的对象不会消失,看起来也没有变化;然而,很容易看出,现在您选择的是一个单独的 矩形。这个矩形被您的对象组成的图案填充,并且它具有它们的边界框的确切大小和位置,这意味着图案正好可以放入矩形中。如果您现在拖动矩形大小手柄(使用矩形或节点工具),您将看到其他瓦片:

图 10-15. 从对象创建图案
现在,您可以通过选择此矩形(如果您不再需要,可以将其删除)或从 填充和描边 对话框中的图案列表中选择它,轻松地将新图案分配给任何对象,如图 图 10-16 所示。
SVG 允许您在图案中的瓦片周围设置边距以使它们分开。不幸的是,Inkscape 目前还不支持通过 UI 来实现这一点。虽然如果您知道如何操作,可以在 XML 编辑器中这样做,但一个更简单的方法是向创建图案的对象添加一个超出其他对象边缘的透明矩形,从而在图案的瓦片之间增加间隔。

图 10-16. 填充和描边对话框中的图案绘制
如果您想从图案中提取图块对象以便编辑,请选择具有该图案的对象,并使用对象 ▸ 图案 ▸ 图案到对象命令。
10.8.2 编辑图案
当您处于节点工具或形状工具时,具有图案填充的每个对象都显示三个编辑手柄,允许您在对象内移动、缩放和旋转图案。与渐变一样,这些手柄可以位于画布的任何位置,而不一定在对象本身上。然而,与渐变不同的是,这些手柄不是通过线条连接的,不能通过键盘选择或移动,只能通过鼠标拖动。
此外,与渐变工具不同,目前只能显示单个选中对象的图案手柄。虽然正确渲染,但图案上的线条目前还不能通过手柄进行编辑。
X 形手柄
- 位于其中一个图块(“原始”图块)的左上角。拖动此手柄可以在任何方向上移动图案。
方形手柄
- 位于原始图块的中央。拖动此手柄可以缩放图案。为了使缩放均匀(即,保持图块的宽高比),请使用
拖动。
圆形手柄
- 位于原始图块顶部中间。拖动此手柄可以旋转图案,以 X 形手柄为轴。使用
拖动以将旋转角度固定在 15 度步进。
从美学角度来看,图案的主要问题与它们的主要优势相同:重复性。虽然在技术插图中有必要或至少可以接受,但过于重复的矩形图案很少能改善艺术绘画(尽管有时可以使用一些更复杂的图案类型产生很好的效果)。两个经常有帮助的简单方法是尽可能放大图案(这样图案的副本就少一些,可以放入对象中),以及旋转它,使其不再是水平/垂直的,因此看起来不那么规律。
10.8.3 股票图案
对象到图案命令并不是添加图案到您的文档的唯一方法。Inkscape 附带了一些简单的股票图案,您可以在文档中重复使用。
选择一些对象,并通过点击填充和描边对话框中相应选项卡中的图案按钮将其切换到图案绘制。您将看到一个下拉列表([图 10-16](ch10s08.html#pattern_paint_in_the_fill_and_stroke_dia "图 10-16. 填充和描边对话框中的图案绘制")),其中包含您的文档中的图案(如果有),在顶部,以及一组股票图案,在分隔符之后。要使用其中一个图案,只需从列表中选择即可。
-
在这里有一系列不同条纹宽度和间隙宽度的比例的普通条纹,范围从 4:1 到 1:64。例如,条纹 1:2图案的间隙宽度是条纹的两倍。所有条纹图案都存在两种版本:带有黑色条纹和带有白色条纹(间隙始终透明)的版本。
-
有两种黑白奇数方块的棋盘图案(偶数方块是透明的)。
-
密集圆圈选项是一种密集的黑色圆圈六边形图案,间隙透明。
-
圆点是一种看似随机但均匀分布的点状图案,旨在掩盖重复图案的规律性。此图案有三种尺寸变体(小、中、大圆点)和两种颜色变体(黑色和白色圆点)。
-
波浪是一种由透明间隙分隔的波浪线图案。
-
迷彩是一种绿色调的保护图案,如军事上使用的图案。
-
貂皮是传统的纹章图案,起源于对黑尾貂皮风格的表示。
-
三种位图图案,沙子、布料和旧油漆,基于无缝摄影瓷砖,并允许您在绘图上添加一些自然纹理。所有这些都是灰度图,因此您可以使用这些纹理使对象半透明,并将它们叠加在其他彩色对象上以“纹理化”它们。
库存图案存储在 Inkscape 的share目录下的patterns/patterns.svg文件中(在 Linux 上通常是/usr/share/inkscape,在 Windows 上是
第十一章。形状
做任何事,任何时间,以您喜欢的方式的自由是优秀矢量编辑器自豪的一件事。通过一组通用的对象类型和用于操作它们的通用工具,您可以渲染,或者至少近似,任何可想象的图形。
然而,绝对的自由并不总是好事。例如,路径(第十二章将形状转换为路径(或者,在 3D 盒子的情况下,转换为组)。然而,反向转换是不可能的(至少,不是自动的)。这意味着形状是一个比路径更高层次的抽象;将形状转换为路径会丢失一些信息,因此这是一个单向的、破坏性的操作。
AI
令人惊讶的是,Inkscape 中的形状工具在 Adobe Illustrator 中没有直接对应的功能。AI 在这一领域只有一些“快速形状”工具,可以创建一些基本形状——但是,一旦创建,对象就会忘记它们的起源,变成没有任何形状特定功能的普通路径。Inkscape 的“自我意识”形状的便利性是其相对于 Illustrator 的一个重要优势。*
SVG
Inkscape 的椭圆和星形比 SVG 标准定义的形状元素要灵活得多。因此,Inkscape 使用通用的 path 元素来表示这些形状,而不是 SVG 提供的 ellipse 和 polygon 元素(尽管它也可以读取和显示这些 SVG 形状元素)。对于螺旋形,SVG 根本没有任何元素,因此它们也通过一个 path 元素内部表示。唯一使用非path 元素的形状是矩形,它使用 rect 元素。
11.1 形状工具
通过使用相应的工具在画布上拖动来创建一个新的形状对象——例如,使用矩形工具拖动可以创建一个新的矩形。新创建的形状保持选中状态,任何选中的形状都会显示其编辑手柄(类似于渐变手柄)。通过拖动这些手柄,您可以立即编辑您所创建的内容。
大多数手柄在您拖动它们时,带有或不带有各种键盘修饰符时工作方式不同(
,
,
)。当您将鼠标悬停在某个手柄上时,状态栏会告诉您在拖动或点击带有不同修饰符的手柄时该手柄会做什么。
与大多数其他工具一样,形状工具具有某些对象选择功能。在任何形状工具中,您可以通过点击来选择一个对象,这就像选择工具中的
-点击一样工作(即忽略任何分组,5.10 在组中选择)。
-点击(选择下方,5.9 从下方选择对象)也适用;
取消选择。
-点击(添加到选择或从选择中移除)在形状工具中同样适用,但不太有用,因为目前,形状编辑手柄仅在选中单个形状时显示;选中的多个形状无法通过手柄进行编辑。这可能在 Inkscape 的未来版本中得到修复。
并非您只能使用矩形工具编辑矩形。所有类型的形状都会在任何形状工具中显示,并允许您拖动其形状特定的手柄,以及在使用节点工具时(
)。
11.1.1 形状参数
选中形状的数值参数——如果没有选中任何形状,则为将用于新创建形状的参数——可在每个形状工具的控件栏(2.3 界面概述)中访问。通常,那里有几个数值输入字段和切换按钮,以及一个将值重置为默认值的按钮(此按钮放置在所有其他控件右侧)。
对这些控件所做的任何更改都会被记住,并在使用该工具绘制下一个对象时使用,就像您分配给对象的样式属性通常用于下一个创建的对象一样(11.1.2 新形状的样式)。例如,在您更改星星的角数后,您绘制的新的星星将具有相同的角数。
此外,即使只是简单地选择一个形状,也会将其参数发送到控制栏,这些参数会被记住,并在以后用于创建此类型的新形状。这使得以类似从对象到对象粘贴样式的类似方式重用形状参数变得容易(8.1 样式基础),但无需使用复制和粘贴。例如,如果你的画中有一个略微圆润的九角星,没有随机化,只需选择那个星形就足够了,后续创建的星形将具有完全相同的参数。
11.1.2 新形状的样式
下一个你创建的形状将使用什么样式?你可以通过查看控制栏最右端来始终得到这个问题的答案。所有形状工具——实际上,所有对象创建工具——都有一个样式样本在那里显示将用于新创建对象的填充、轮廓和透明度:

图 11-1. 此样式将用于新创建的形状。
默认情况下,除了螺旋以外的所有形状工具都使用最后设置的样式作为它们创建的新对象的样式。这意味着每次你更改对象中的某些样式属性时,Inkscape 都会记住此属性,并将其用于新形状。例如,在你将某物涂成绿色后,所有新的矩形、椭圆、星形等都将出现相同的绿色。或者,如果你将 3 px 的轮廓宽度和 1:1 的虚线图案分配给某些路径或形状,新形状也将具有此轮廓样式。(对于 3D 盒子,这种行为变得更加复杂,因为盒子有六个面,每个面使用六种不同的样式;有关详细信息,请参阅11.3.5 样式。)
如果你不喜欢为新对象使用最近设置的样式的想法,你可以更改它。在左侧工具箱中双击形状工具的按钮;这将在Inkscape 首选项对话框中打开该工具的页面(3.1.1 Inkscape 首选项)。在那里,新对象样式的双向开关可以是最后使用的样式或特定于该工具的固定工具样式。在后一种情况下,你可以按从选择中获取按钮来记住当前选择的样式作为工具的固定样式。

图 11-2. 形状工具的首选项页面
例如,如果你想所有矩形始终以黑色出现且无轮廓线,选择一些无轮廓线的黑色对象,转到Inkscape 首选项,将矩形工具切换到使用其自己的样式,并点击从选择中获取。
11.2 矩形
矩形,虽然听起来可能有些无聊,但却是最常用的形状类型;你几乎找不到一个不被矩形主导的设计。Inkscape 努力使创建和编辑矩形尽可能简单和灵活。
切换到矩形工具(通过点击左侧的工具栏按钮,或按
或
),然后在画布上的任何位置拖动。使用
拖动以获得正方形或整数比例(2:1、3:1 等等)的矩形;使用
拖动以使起点成为矩形的中心而不是一个角。
和
可以组合使用。

图 11-3. 绘制矩形
新矩形显示四个手柄。其中两个是位于左上角和右下角的尺寸手柄,它们是小小的正方形。另外两个,看起来像小圆圈,是圆角手柄;它们都位于右上角,因此看起来像是一个手柄,直到你拖动其中一个。

图 11-4. 矩形手柄
11.2.1 尺寸调整
使用尺寸手柄,你可以通过简单地拖动任意一边的任意方向来调整矩形的大小。当然,使用
拖动会锁定矩形的宽度、高度或宽度/高度比,通过将手柄吸附到其边或对角线上。
注意
与选择工具不同,你不能将,例如,右下角的尺寸手柄移动到比左上角手柄更高的位置或更向左的位置。你最多只能使矩形宽度为零、高度为零或两者都为零(因此不可见)。
在控制栏中,一些标有 W 和 H 的数字控件也控制所选矩形的宽度和高度。它们使用在右侧的单位选择器中选择的测量单位。
当你可以使用选择工具同样轻松地调整矩形大小时,为什么还要使用尺寸手柄呢?选择工具的问题在于它总是沿着文档坐标系(即沿页面边缘)水平或垂直缩放事物。相比之下,矩形的手柄会沿着该矩形的边进行缩放,即使矩形已经旋转或倾斜。W 和 H 的值也始终反映矩形的固有宽度和高度,而不是其边界框的尺寸(如果矩形旋转或倾斜,这些尺寸可能会有很大不同)。

图 11-5. 矩形尺寸手柄与选择工具的缩放比较
尺寸手柄的另一个优点是它们始终保留矩形的圆角半径(尽管,正如我们很快就会看到的,选择工具也可以做到这一点)。
与任何其他形状类型一样,矩形的尺寸手柄可以被设置为吸附到网格、参考线和其他对象。如果你从一个特别旋转和/或倾斜的矩形开始,并启用节点到路径、节点和交点的吸附(7.3 吸附),使用复制 (
) 和尺寸手柄来创建紧密贴合、无缝的轴测矩形组合就很容易了,如图 11-6 所示。
注意
吸附的是鼠标点,而不是手柄本身。如果,例如,你正在使用
来锁定矩形的宽度或高度,这两个点可能会相距很远。在 图 11-6 中,我想使最左边的矩形变窄但保持其高度,所以我将手柄从 A 移动到 B。然而,我还想使这个矩形紧贴矩形 D 的左边缘(由粗线标记)。因此,在拖动且不释放
的情况下,我将鼠标光标移动到点 C,使其吸附到所需的边缘(实际的句柄此时在 B),然后在那里释放鼠标。为了实现这一点,请启用节点和手柄作为可吸附对象,以及路径作为吸附目标(7.3 吸附)。

图 11-6. 将斜矩形吸附到一起
11.2.2 圆角
现在,抓住一个圆形圆角手柄,并将其沿矩形的侧面拖动。矩形的四个角都通过圆弧变为圆角;此外,现在你可以看到第二个圆角手柄——它保持在角落的原始位置。如果你需要 圆形 圆角,你可以保持它不变。如果你想 椭圆形 圆角,将另一个手柄沿矩形的另一侧从角落移开:

图 11-7. 矩形圆角手柄
注意
即使矩形倾斜,圆形圆角也可能看起来是椭圆形的(参见 23.3 圆角)。
使用控制栏中的 Rx 和 Ry 数值字段,您可以显式指定两个圆角半径的绝对单位(通过右侧的单位选择器选择)。如果选择了多个矩形,您输入的值将应用于所有这些矩形(如果选择了任何非矩形,则将忽略)。右侧带有角落图标的按钮将移除所选矩形的任何圆角。
您可以移动圆角手柄的最大距离是相应矩形尺寸的一半。当两个圆角手柄都达到这个最大值时,实际上将正方形变成了圆形,将非正方形变成了椭圆形。
通常,在技术图纸如方案和图表中,整个构图中的圆角的大小和形状必须相同,即使矩形的大小不同。Inkscape 使这变得容易。选择工具栏上的四个 Affect 按钮(6.10 影响哪些变换)中的第二个,显示两个同心圆角,控制当缩放矩形时圆角是否缩放。为了比较,图 11-8 显示了使用此按钮开启和关闭时缩放的多个圆角矩形。

图 11-8. 缩放矩形可能或可能不会影响圆角半径的大小。
这里是矩形圆角手柄的快捷键:
-
使用
拖动来使圆角变为圆形(即,使另一个半径相同)。 -
-点击一个手柄来使圆角变为圆形,而不需要拖动。 -
-点击一个手柄来移除圆角。
11.3 3D 盒子
一个 3D 盒子 是一个表示三维盒子(矩形棱柱)在绘图平面上的投影的对象。因此,它由六个 面 组成,从纯 SVG 视点来看,它只是一个由六个路径组成的组,每个路径有四个节点。然而,Inkscape 以特殊方式处理这些对象,允许您在它们自己的 3D 空间中调整大小和移动它们,重新定位它们的消失点等。
除了 3D 盒子工具之外,大多数其他工具和命令都将 3D 盒子视为一个组。特别是,你可以使用选择工具通过
-点击和
-点击来选择盒子内的任何一面(通常用于更改其样式),就像选择组内的对象一样。在内部选择不会破坏盒子;然而,你也可以通过取消组合(
)或对象到路径(
)命令轻松地将它“取消组合”。这移除了任何 3D 特定的功能,并留下了一个带有路径的常规组。
11.3.1 为什么使用 3D 盒子?
什么使得这样一个看似有限的构造,如 3D 盒子,变得有用?
Inkscape 并不打算成为一个功能齐全的 3D 应用程序——它不会模拟一个“真实”的三维空间,在其中你可以放置你的 3D 对象。Inkscape 始终是一个二维绘图工具。然而,它经常被用来绘制三维对象。因此,为了帮助完成这类任务,Inkscape 实现了一个简单、面向 2D 的透视绘图系统,这个系统自从六百年前文艺复兴艺术家完善以来基本上没有改变。
在 Inkscape 中,你并不是“构建一个 3D 世界”,你只是创建一个代表三维场景的二维绘图。Inkscape 的 3D 盒子工具主要是一个辅助工具,它使得创建这种透视绘图变得更加容易。在透视绘图中,一个盒子几乎和矩形对于二维绘图和布局一样重要;通常,正确绘制任何东西的透视都是从绘制其包围盒开始的。因此,Inkscape 的 3D 盒子通常不是出于它们自身的目的而被使用,而是作为快速且 3D 精确的布局指南——用来对齐你的对象并将它们绘制进去(参见第二十一章中的示例)。
另一方面,在 Inkscape 中创建和重塑 3D 盒子的便捷性本身就是一种灵感。一种以 3D 盒子为主导的艺术风格,以 Inkscape 0.46 的关于盒子(帮助 ▸ 关于)为例,在这个盒子中这个工具首次亮相:

图 11-9. 使用 3D 盒子的设计构图
11.3.2 绘制
要绘制一个 3D 盒子,切换到 3D 盒子工具(
或
)并在画布上拖动。这将在 X/Y 平面上绘制盒子的正面;盒子沿 Z 轴的深度保持固定。要切换到 Z 轴,使用
拖动;这会固定 X/Y 面,但让你调整深度:

图 11-10. 绘制 3D 盒子
一旦创建了一个盒子,它会在每个八个角以及中心显示一个把手。此外,彩色线条从盒子的边缘延伸到消失点。让我们详细看看这些控件。
11.3.3 视角和消失点
每个三维盒子都存在于一个特定的 视角 中,这个视角由三个 消失点 定义,对应于三个空间维度:X(红色引导线)、Y(蓝色引导线)和 Z(黄色引导线)。每个消失点可以是 有限 的(在这种情况下,它是一个你可以拖动的实际把手)或 无限 的(在这种情况下,它只是指向无限远点的方向;你可以改变这个方向的角度)。
默认情况下,X 和 Z 消失点是有限的,位于你文档页面左右边缘的中间。Y 消失点是无限的,其方向是垂直的:

图 11-11. 默认视角
任何维度中消失点的有限/无限状态可以通过工具控制栏中的三个按钮切换。有限的消失点可以简单地自由拖动在画布上。无限消失点的角度可以在控制栏中数值调整,或者通过快捷键:
-
和
旋转 X 消失点方向。 -
和
旋转 Y 消失点方向。 -
和
旋转 Z 消失点方向。 -
,
,和
切换相应的消失点从有限到无限,再回到有限。
没有修饰符时,这些键按角度步长旋转(默认为 15 度,6.3 选择器:旋转和倾斜)。使用
时,它们旋转,使得透视线在当前缩放下最多偏移 1 个屏幕像素。
例如,你可以将所有三个消失点设置为无限,并以 150 度(X)、90 度(Y)和 30 度(Z)的角度旋转它们来绘制没有透视缩短的等距盒子。此外,虽然盒子在位于三个消失点之间时看起来最自然,但它们并不一定要在那里;将盒子从“自然”视角的甜点处移开会使它看起来奇特地扭曲,有时这可能是你想要的。
对于新创建的 3D 盒子,Inkscape 将重用最后选择的 3D 盒子的视角。因此,通常多个盒子会 共享 相同的视角。重要的是要注意,当你改变一个视角时,所有 使用此视角的盒子——无论是否选中——都会对变化做出反应:

图 11-12. 通过拖动消失点改变视角会影响此视角中的所有盒子。
如果几个盒子共享一个视角,你可以通过按住
并拖动其中一个盒子的有限消失点(仅选择该盒子)来 取消合并 它。与不按住
拖动不同,这将只影响所选的盒子。另一种取消合并盒子视角的方法是通过在选择器中移动盒子对象;这将拖动其自己的消失点集与盒子一起移动,而不会影响任何其他盒子。取消合并一个盒子后,改变该盒子的视角将只会影响该盒子。
另一方面,将两个不同的视角合并在一起也同样简单,使它们成为一个。为此,选择具有不同视角的两个盒子,并将一个视角的有限消失点移动到另一个视角上——它们会自动对齐并连接(类似于当渐变手柄拖动足够近时,10.4.3 移动、合并和自动对齐),盒子现在将具有相同的视角。(如果视角有任何无限消失点,它们的方向角必须相同才能进行透视合并。)

图 11-13. 合并和取消合并消失点
11.3.4 手柄
当在任意形状工具或节点工具中选择 3D 盒子时,它会显示八个菱形 角手柄 和一个 X 形 中心手柄。没有修饰符的情况下,前 X/Y 侧的四个手柄会重塑该侧面,而另外四个则改变盒子的 Z 深度。然而,使用
时,它们的角色会互换,如图 图 11-14 拖动盒子的角手柄") 所示。
拖动盒子的角手柄
图 11-14. 使用和不使用
拖动盒子的角手柄
使用
,侧边调整大小手柄会自动对齐到该侧边边缘及其对角线的延续处。(对于改变深度的手柄,
无效。)

图 11-15. 使用
拖动框的角手柄
类似地,不使用修饰符拖动中心手柄会在 X/Y 平面内移动框,而使用
则会将其自动对齐到其 X 和 Y 消失点的方向以及它们之间的平分线。使用
(无论是否使用
),中心手柄会沿着指向其 Z 消失点的方向移动框:

图 11-16. 使用
拖动框的中心手柄,有和无
与矩形一样,如果你启用了节点对路径、节点和交点的自动对齐(7.3.3 节点和手柄自动对齐),你的 3D 场景将感觉非常灵敏——你绘制的或调整大小的任何内容都会急切地连接并排列,这使得从多个框中构建无缝的实体结构变得愉快。作为一个简单的例子,要构建多层建筑,先绘制一个单层框,然后通过
和
拖动复制的中心手柄向上移动,直到它自动对齐到下一层:

图 11-17. 使用
和自动对齐手柄到路径,使构建复杂场景变得容易。
11.3.5 样式化
从样式的角度来看,3D 框与路径组没有区别。默认情况下,新框的六个侧面都有不同的蓝色阴影;你可以用某种颜色涂满整个框(从而消除侧面之间的任何差异),或者你可以
点击并
点击来选择框中的任何单个侧面并单独涂色。
此外,你甚至可以像进入一个组(5.10 选择组)一样进入盒子,通过选择它并按下
;之后,你可以通过简单的点击或通过
和
来选择单个侧面。完成这些操作后,盒子仍然是一个盒子——要移除其 3D 盒子功能,你需要取消组合(
)或将其转换为路径(,在这种情况下实际上将其转换为路径的组)。
除了颜色之外,你还可以将模糊(17.1 模糊)、裁剪和蒙版(18.4 裁剪和蒙版)应用到整个盒子或其任何单个侧面。如果你降低 3D 盒子的不透明度,它表现得就像一个半透明组(4.5.1 组的使用):你可以看到盒子下面的内容,但你看不到盒子本身的隐藏侧面。要看到隐藏的侧面,你需要通过单独选择它们来降低单个侧面的不透明度,如图 11-18 所示。
盒子内侧面的 z-顺序 总是从 3D 视点自动正确——也就是说,那些应该离你更远的侧面在底部,而正面在 z-顺序的顶部。然而,Inkscape 不会以任何方式强制执行不同盒子的 z-顺序;与其他所有形状工具一样,3D 盒子工具在当前层的 z-顺序之上创建新的盒子(4.3 Z-顺序)。这意味着在绘制一个盒子之后,你可能需要相对于其他盒子在 z-顺序堆栈中移动它,以便构图看起来正确。

图 11-18. 整个盒子和各个侧面不透明度的比较
对于新创建的盒子,最后设置的风格和工具自己的风格(11.1.2 新形状的风格)的选择也适用,但有一些变化。默认情况下,3D 盒子工具使用最后设置的风格,但它的定义不同:与所有其他工具不同,它记住的是 3D 盒子的同一侧面上最后设置的风格,而不是任何对象。例如,如果你将任何盒子的顶部侧面涂成红色,那么之后你创建的所有新盒子的顶部侧面(但不是其他侧面)也将是红色的。
由于 3D 场景通常假设一个单独的光源,这种行为是有意义的:画一个单独的框,并按照从例如左上角照射的样子绘制其侧面。之后,你创建的所有新框将以类似的方式“照亮”。
注意
最后一种样式只有当你将其分配给“单独的边”而不是整个框时,这个工具才会记住。例如,如果你只是选择一个框并将其全部涂成红色,新的框将不会遵守这一点。所以,假设你希望所有新的框都有轮廓但没有填充(“线框”),最简单的方法是将框作为一个组(
))输入,选择所有其边(
)),然后一次性为它们分配轮廓并移除填充。*
调整工具在 3D 框上工作的方式与你预期它在多个路径(分组或不分组)上工作的方式完全一样。使用路径调整模式(12.6 路径调整),一旦你扭曲了框的边,它就不再是 3D 框,而变成了一个简单的组。然而,颜色绘制和颜色抖动模式却可以在不破坏其 3D 功能的情况下覆盖框。通常,只启用色调和可能饱和度通道,但不启用亮度(8.7.3 通道)是有意义的,这样你就可以改变框的颜色,同时保留其边的相对亮度和暗度以产生 3D 效果,如图 9 所示的颜色插入图中。
11.4 椭圆
椭圆是一种可以表示椭圆、圆、弧(未闭合)或段(闭合,弧加上从弧两端延伸到中心的两个半径)的形状:

图 11-19. 椭圆、弧和段落的句柄
11.4.1 绘制
要切换到椭圆工具,请按
或
。以下是椭圆绘制的快捷键:
-
在画布上拖动会创建一个椭圆,该椭圆内嵌于你拖动所创建的(想象中的)矩形内。
-
当按下
时,那个想象中的矩形首先被限制为正方形或整数比例(1:2、2:1 等),然后椭圆被内嵌其中。 -
当按下
时,绘制从中心开始,因此椭圆的四分之一被内嵌到这个矩形中,而不是整个椭圆。当同时按下
和
时,你会得到一个从中心开始的圆或整数比例的椭圆。![不使用句柄绘制椭圆]()
图 11-20. 不使用
绘制椭圆 -
当按下
时,工具的行为会改变(参见 图 11-21). 现在它绘制一个对角线从鼠标拖动起点到终点延伸的椭圆。换句话说,你可以在椭圆的 10:30 点开始拖动,并在 4:30 点结束,椭圆会根据需要挤压以适应这条对角线。 -
使用
,工具始终绘制一个完美的圆,其直径从拖动开始到拖动结束。如果你需要一个给定直径的圆,这很方便。 -
将
添加到
和
中,其效果与不使用
时相同,但它将从中心开始绘制。你只需在上面的描述中将“直径”一词替换为“半径”即可。
快速创建固定大小的圆的一种方法是通过在笔工具中的直线或准直模式
-单击(14.1.4 模式)。这些圆的大小可以在笔工具的 Inkscape 预设 页面上设置。添加
使其大小加倍,或添加
使其大小随机化。

图 11-21. 使用
绘制椭圆
11.4.2 控制柄
创建椭圆时,它会显示三个控制柄:两个方形和一个圆形。就像矩形一样,方形控制柄是尺寸控制柄,而圆形控制柄实际上是叠放在一起的两个控制柄。然而,在椭圆中,圆形控制柄不是用于圆滑,而是用于将椭圆变成弧线或段,正如我们很快就会看到的。
与矩形一样,椭圆的尺寸控制柄改变椭圆的宽度和高度是在椭圆的自身坐标中,而不是文档坐标中。无论你如何旋转或倾斜椭圆,这些控制柄都会记住椭圆两个轴的位置,并允许你相对于这些内在轴拉伸或挤压椭圆,始终保持中心的位置:

图 11-22. 在选择器和尺寸控制柄中变换椭圆
这里是椭圆尺寸控制柄的快捷键:
-
按
拖动可以将椭圆转换为圆形,方法是使另一个半径相同。 -
-点击一个句柄可以将椭圆转换为圆形,而无需拖动。(注意,由于倾斜,圆形可能看起来是椭圆形的。)
现在,让我们看看弧/线段句柄(圆形的)。要创建线段(弧加上两个半径),请将一个或两个这些句柄拖出椭圆;要创建弧,请保持在内部拖动。当然,句柄本身始终保持在椭圆的边缘上,既不在内部也不在外部;“拖动内部”指的是您抓住该句柄时鼠标的位置。请注意,尺寸句柄保持功能性和与整个椭圆相同的定位,这可能位于您的弧或线段之外。
椭圆工具的控制栏允许您指定弧的精确角度,将其转换为线段,并使椭圆完整:

图 11-23. 线段和弧
注意,与线段不同,弧是未闭合的形状;换句话说,描边只沿着椭圆的边缘延伸,但不会连接弧的两端。如果您移除填充,只留下描边,就可以清楚地看到这一点。
这里是弧/线段句柄的快捷键:
-
按
时,在拖动时将句柄捕捉到角度增量(默认为 15 度,6.3 选择器:旋转和倾斜)。 -
-点击一个句柄可以将弧或线段转换为整个椭圆。
记住,就像所有其他形状参数一样,椭圆的起始和结束角度会被记住并重新用于新创建的形状。当您打算画一个椭圆却得到一个狭窄的饼片时,有时可能会感到惊讶。
11.5 星形和多边形
星形工具(
键或
)创建两种稍微不同的中心对称形状——多边形和星形。尽管这个想法很简单,但这却是 Inkscape 中最复杂的工具之一,无穷无尽的娱乐性,非常适合让你的朋友惊叹。
一个多边形只是位于一个想象中的圆上等距离的点,并通过直线段连接起来。Inkscape 多边形有一个菱形句柄,用于缩放和旋转它。
星形是一个更有趣的对象:它包含两个想象中的同心圆上的两套等距点,星形的轮廓在内外圆的点之间来回曲折。使用星形的两个手柄,你可以改变圆的直径,并使圆相对于彼此围绕它们的共同中心旋转,这会产生令人着迷的复杂对称形状。

图 11-24. 多边形和星形
11.5.1 绘制
在绘制新形状之前,通过按控制面板上的切换按钮决定你想要绘制的是多边形还是星形,并在数值控制中选择角的数目(凸顶点)。例如,有三个角的多边形是等边三角形,如果转换为路径,将会有三个节点;然而,有三个角的星形将有六个节点。你还可以更改现有形状的多边形/星形类型和角的数目——只需选择它并编辑值。
注意
角的数目可以从 3 到 1000,但设置得太高可能会显著减慢 Inkscape 的速度,除非你使用轮廓模式(3.11 渲染模式)。
绘制形状,再次,就像在画布上拖动鼠标一样简单。星形或多边形始终从其中心开始绘制。只有一个键盘快捷键:使用
拖动可以将形状的一个角相对于其中心的角度固定到 15 度的增量。
11.5.2 手柄
多边形的一个手柄只能用来缩放和旋转多边形——你可以在选择器中通过变换做到这一点。星形的两个手柄则更有趣。
首先,通过将其中一个手柄移动到或从星形的中心,你正在改变星形顶点所在的两个圆的直径比例。这个比例被称为 辐条比,也可以在控制面板中作为数值参数进行调整(对于多边形不可用):

图 11-25. 调整 5 边形星的辐条比
你甚至可以将最初的内手柄移动到比外手柄更远的位置。控制面板仍然会显示一个小于 1 的比例,因为它总是将较小的半径除以较大的半径,而不管最初哪个是内手柄,哪个是外手柄。
其次,内手柄(最初位于内圆上)可以沿星形中心的弧线 切向(即沿着星形中心的弧线)移动,以扭曲星形的顶点。(旋转外手柄只是旋转整个星形。)

图 11-26. 沿切线移动星形的多边形内手柄
如果你想要保持顶点严格径向(没有切向位移),则拖动内手柄(
),或者-单击它以在不拖动的情况下移除任何现有的切向倾斜。
11.5.3 圆角
通过圆角星星和正多边形可以实现许多迷人的效果。星星的圆角与矩形的圆角不同;对于星星或正多边形,不仅角变得不再尖锐,星星的所有边都弯曲成优雅的贝塞尔曲线:

图 11-27. 一个圆角四边形与一个圆角矩形的比较
如你所见,圆角正方形在圆形或椭圆形圆角之间有直线段,而圆角多边形或星星则完全没有直线——所有段都变成了贝塞尔曲线。
星星工具的圆角数值控制是贝塞尔手柄长度(12.1.4 贝塞尔曲线)与这些手柄影响的正多边形/星星边的长度的比例。此参数可以是负值,这会反转切线的方向。通常,0.2 到 0.4 之间的值会给出最自然的结果。负值或过高的正值往往会造成扭曲、循环和自相交。通过在不同圆角星星中调整手柄位置,你可以得到无限多样的美丽形状:

图 11-28. 玩转圆角星星
除了在控制栏上设置数值圆角参数外,还可以通过
-拖动任何手柄进行切向圆角。围绕星星中心的逆时针旋转手柄会导致正圆角;顺时针旋转使其为负。-单击手柄会移除任何圆角。
如果你想要星星的外角尖锐而内角平滑,或者相反,尝试从星星创建一个偏移路径(12.4 偏移)。
11.5.4 随机化
使星星更有趣的另一种方法是随机化它。随机化将星星或正多边形的所有顶点移动到随机的方向和随机的距离。如果星星是圆角的,随机化会保持所有顶点的平滑性。
整体效果的力量由控制栏中的 随机化 参数控制,它可以取正值和负值。当你改变这个值——或者简单地
——每个节点的随机位移方向保持不变,只有距离发生变化;负值只是将顶点移动到相反方向。换句话说,星星以相同的方式保持随机化,但程度不同。
相反,当你简单地拖动随机化星星的把手进行缩放或重塑它,或者当你绘制一个具有非零随机化的新星星时,形状会颤抖和抖动,在鼠标的每一次轻微移动中都会突然改变所有节点的随机位移(在数学术语中,重新播种 随机化)。因此,如果你想使星星以相同的整体幅度进行不同的随机化,只需稍微拖动其任意把手:

图 11-29. 随机化星星
随机化星星有什么好处?随机性是自然界的基本力量之一,在设计中的随机性是使形状更加生动和不太僵硬的极好方式。你的艺术感和经验会告诉你在哪里以及多少随机性是合适的。在 Inkscape 中,有许多艺术随机性的来源;你可以轻松地打乱对象的顺序(7.5.1 随机化、去簇和去除重叠),创建具有随机位置、缩放和旋转的图案(10.8.2 编辑图案),以及随机移动路径中的节点以扭曲它们(12.6.6 粗糙模式)。然而,随机化星星在快速且容易地绘制出具有内在对称性强调其随机性的形状方面是独特的。
稍微的随机化使星星更加人性化,有时甚至非常有趣;强烈的随机化会产生各种狂野和不可预测的形状。混乱的毛球、圆润的阿米巴状墨迹、边缘奇妙的景观,以及具有许多顶点和接近 1 的辐条比的大星星——所有这些以及更多都是通过星星随机化实现的。例如,图 11-30 展示了一个星星,未随机化(左)和仅通过 0.005 随机化(右)以看起来更加自然地毛茸茸,并消除未随机化时星星上的摩尔纹。

图 11-30. 未随机化(左侧)和通过 0.005 随机化(右侧)的 500 个顶点的星形。
作为另一个例子,这里有一些随机散布且未聚集的五边形,圆角为 0.28,随机化度为 0.15,看起来非常像海滩上的鹅卵石:

图 11-31. 鹅卵石:未聚集(7.5.1)的圆形和随机分布的五边形
11.6 螺旋
螺旋工具(
键或
)创建另一个简单但多功能的形状——同心螺旋。虽然它不如星形那么令人兴奋,但有时非常有用。
螺旋,就像星形一样,是从中心绘制的。像往常一样,使用
拖动时,拖动点(螺旋的外端)会自动对齐到 15 度的增量(6.3 选择器:旋转和倾斜)。
与所有其他形状工具不同,螺旋工具默认使用其自己的样式来创建新的螺旋——无填充,黑色轮廓——而不是最后使用的样式(11.1.2 新形状的样式)。
画出螺旋后,螺旋在线的两端各显示两个手柄。只需简单地拖动这些手柄进行圆形滚动,即可将螺旋向内或向外滚动,从内部或外部。这样,例如,您可以创建只有一个转向的螺旋。
控制栏中的转向参数反映了您需要完成多少个完整圆周才能到达螺旋的外端。螺旋的最大转向数是 1000。内端由内半径值控制,该值显示螺旋开始时的总转向百分比(图 11-32)。例如,内半径为 0 表示螺旋从中心开始;0.5 表示它从中心和外围之间的一半开始。

图 11-32. 调整转向和内半径
螺旋的发散度是控制螺旋缠绕是否在整个螺旋上等间距(发散度 = 1)、向中心变密集(发散度 > 1)或向外围变密集(发散度 < 1)的参数。您可以通过控制栏中的数字或通过
-拖动内手柄上下移动来更改此参数:

图 11-33. 调整发散度
外手柄的其他快捷方式:
-
-拖动以缩放或围绕中心旋转(无滚动展开,与绘制螺旋时的行为相同)。 -
-拖动以在滚动或展开时锁定半径(即,整个螺旋变得更密集或更稀疏,但整体大小不变)。
内部手柄快捷键:
-
-垂直拖动以调整发散度。 -
-点击以重置发散度至默认值 1。 -
-点击以将内半径重置为 0(即,将内手柄完全移至中心)。
何时使用螺旋是有意义的?螺旋可以以均匀的同心图案填充给定的空间——这可能不容易通过手动或其他工具实现。因此,它可能成为其他对象的载体或指南,例如标记(9.5.1 中间标记和节点)、虚线图案(9.4 虚线图案)、路径上的文本(15.2.3 路径上的文本)或实时路径效果(13.1 路径效果)。此外,与椭圆工具一样,螺旋工具可以方便地创建具有平滑变化的曲率的曲线;与普通的贝塞尔曲线不同,通过沿着曲线拖动手柄可以缩短或延长弧或螺旋,而不会影响其形状。
第十二章. 路径编辑
在大多数矢量图形中,路径构成了所有对象中的绝大多数。这就是为什么熟悉路径非常重要——没有它,你真的不能说你知道如何在矢量编辑器中工作。
Inkscape 提供了一系列灵活的工具、命令和效果,用于处理路径。我们将从 SVG 路径和传统路径工具的基础开始,这些工具的类似物你可能已经在其他软件中见过。然后,在本章的后半部分和下一章中,我们将探讨 Inkscape 的高级路径编辑技术,这些技术通常更高效——而且几乎总是更有趣。例如,你可能发现 Tweak 工具(12.6 路径调整)非常简单自然,以至于你很少想回到更技术性和低级的节点工具(12.5 节点工具)。然而,了解路径的构成并在必要时直接操作路径节点是很重要的,因为这是任何类型矢量图形的基础之一。
12.1 路径的解剖结构
路径是由直线或曲线段连接的节点(点)序列(图 12-1)。每个节点可能有一个相邻段(如果它是端点节点)或两个(如果它是中间节点);SVG 不允许你在同一节点处连接超过两个段的分支路径。

图 12-1. 路径 = 节点 + 段
路径的长度不受限制;它可能包含从两个到数千个节点(尽管过于复杂的路径渲染速度较慢,因此应该避免)。
注意
拥有一个或甚至零个节点的路径是合法的,但这样的路径是不可见的。
使用路径,你至少可以近似(在许多情况下,可以精确再现)任何可想象到的形状、形式或图形。根据所需的形状和精度,在最坏的情况下,你可能需要使用许多密集定位的节点。

图 12-2. 同一个图形可以用少数节点粗略地近似,也可以用更多节点更精确地再现。
12.1.1 子路径
在路径中,相邻的两个节点可能没有通过段连接。这会在路径中产生一个间隙,每个这样的间隙都将路径分割成不相连的部分,称为子路径,如图图 12-3 所示。
没有间隙的路径被称为由单个子路径组成。任何子路径,就像一根绳子一样,可以是开放的(有两个松散的端点,称为端节点)或封闭的(打成一个环,使其端节点是同一个节点)。
在许多方面,子路径看起来和表现就像独立的路径。你可以通过使用路径菜单中的拆分命令将路径的子路径转换为独立的路径对象。相反的命令,合并,将多个选定的路径转换为单个路径的子路径。

图 12-3. 子路径是路径内连接节点的集合。
当将不同样式的路径组合在一起时,除了最顶层的(在 z 轴顺序中)选定的路径之外,你将失去所有其他路径的样式——因为无论有多少个子路径,单个路径只能有一种样式。然而,路径数据不会丢失或增加:如果你组合并然后拆分任意数量的路径,它们的节点将和之前完全相同。
每个子路径都有一个方向——也就是说,其节点总是从起点到终点的顺序排列。在封闭子路径中,起点节点和终点节点是同一个节点;在开放子路径中,起点和终点节点是不同的。通常,子路径的方向并不重要,但它决定了起点和终点标记(9.5 标记)和路径上的文本(15.2.3 路径上的文本)的位置。方向也可能通过 winding 规则(12.1.2 填充路径)影响路径的填充。使用路径 ▸ 反转 (
)来翻转所选路径或路径的方向。
12.1.2 填充路径
无论你使用什么来填充你的路径——纯色、渐变还是图案(8.1.1 涂色)——都有几个重要的事项需要注意。
填充总是停止在路径本身上——也就是说,如果路径有描边的话,是在路径描边的中心线上。不与自身或其他子路径相交的封闭子路径将简单地填充在内侧。开放子路径将填充,就像子路径的端节点之间存在一条直线段:

图 12-4. 填充开放和封闭的子路径
注意
请记住,这条直线不是路径的一部分;它不会被描边,你不能用节点工具来弯曲它。如果你在编辑一个开放的未描边路径时,遇到一条直线段,它拒绝按照你的预期进行编辑,那么它很可能不是一个段,而只是填充的边缘。关闭子路径(12.5.4 连接和断开)以无限制地编辑它。
当路径相交或当某个子路径完全位于另一个子路径内部时,决定是否填充某个区域取决于两个因素:该区域周围子路径的方向和路径的填充规则。填充规则是一个样式属性,可以取两个值之一,即nonzero或evenodd,这由填充和描边对话框中的两个切换按钮之一设置(参见图 8-2):
-
使用
evenodd填充规则值时,那些被填充的环和洞通常是不可见的,除非路径被描边。通常它们不会成问题,但有时你可能想去除它们。最简单的方法是选择那个路径并使用路径 ▸ 联合命令 (
)。与自身联合的路径会移除所有不影响其填充的子路径。 -
nonzero的填充规则值意味着一个环或洞只有在它的边界相对于外部路径是反方向时才会被填充,如果它们朝同一方向,则它们是空的。
使用evenodd填充规则值时,因此被填充的环和洞通常是不可见的,除非路径被描边。通常它们不会成问题,但有时你可能想去除它们。最简单的方法是选择那个路径并使用路径 ▸ 联合命令 (
)。与自身联合的路径会移除所有不影响其填充的子路径。
在路径内部无法反转单个子路径的方向。如果你需要这样做,你必须拆分路径(12.1.1 子路径),反转其中一个生成的路径,然后合并它们回到一个单独的路径。
12.1.3 描边路径
路径的描边是沿着路径本身的油漆带,因此路径标记了描边的中心线。如果有的话,描边会画在填充之上。有许多样式属性会影响描边的样子;它们在第九章中有详细的介绍。
路径 ▸ 将描边转换为路径 命令 (
) 将所选路径的描边转换为填充。换句话说,它用一个新的路径替换它,这个新路径的 填充 看起来与原始路径的 描边 完全相同,保留了该描边的所有连接、端点、斜接和虚线属性。原始路径的描边油漆成为新路径的填充油漆,而原始路径的填充被丢弃。如果原始路径有标记 (9.5 标记),则结果将是一个组,其中将描边转换为路径的部分与现在是独立对象的标记组合在一起。

图 12-5. 将描边转换为路径
12.1.4 Bézier 曲线
如前所述,路径之间的段——节点之间的路径部分——可以是直线或曲线。现在,让我们更仔细地看看那些曲线段,这些曲线段被称为 Bézier 曲线,以纪念皮埃尔·贝塞尔(1910-1999),一位法国工程师,他是第一个在设计中使用它们的人。
Bézier 曲线完全由四个点的位置确定,其中两个是 节点,两个是 手柄 或控制点。曲线本身始终完全位于这四个点形成的四边形内。在节点工具 (12.5 节点工具)中,每个手柄都通过一条直线与其节点相连。这些 手柄线 总是与曲线在相应的节点处相切:

图 12-6. Bézier 曲线
注意,在路径中,如果一个节点位于两个 Bézier 曲线段之间,它将有两个手柄连接到它,每个相邻段一个。
Bézier 曲线对移动其手柄的反应很难用言语表达,但一旦你稍微实验一下,你很快就会对它有感觉。Bézier 曲线可能几乎无法与圆弧区分开来,但它也可能有尖锐的弯曲,几乎像尖角;当手柄完全缩回时(即,与它们的节点重合),它可能自相交或完全笔直。
当然,尽管它具有多功能性,但使用 单个 Bézier 曲线可能无法创建许多形状。当构建路径来近似某物时(例如,当手动跟踪位图时,18.8.2 跟踪位图对话框),经验将告诉你下一个 Bézier 曲线可以达到多远以及放置下一个节点的最佳位置。使路径更紧密地近似某些现实生活中的形状通常涉及通过添加节点并调整它们的手柄来细分其 Béziers。相比之下,简化路径,无论是手动还是使用 简化 命令 (12.3 简化),通常减少节点的数量,并导致更长的 Bézier 曲线。
12.2 布尔运算
英国数学家乔治·布尔(1815–1864)并未专攻几何学。他发明了布尔代数来处理“真”和“假”的逻辑值。然而,后来发现这些相同的概念对于各种其他数学对象——例如集合或任意几何形状——也完全适用。
所有布尔运算都列在路径菜单中;它们也可以通过从相应数学运算的符号派生的键盘快捷键访问。其中一些需要恰好选择两个对象;其他将适用于任意数量的选中形状。所有这些都将接受路径、文本对象和形状(除 3D 盒子外),并自动将它们转换为路径。如果布尔运算失败(例如,由于选定的操作数数量或类型错误),它将在状态栏中解释其失败的原因。
合并 (
)
-
两个或多个路径的合并创建了一个路径,其填充覆盖了任何原始路径所覆盖的所有点。因此,它将任意数量的路径合并为单个路径,并赋予它最底层选中对象的样式:
![路径合并]()
图 12-7. 路径合并
如果路径完全不重叠,结果将与路径 ▸ 合并(12.1.1 子路径)**
-
两个路径的差集创建了一个路径,其填充覆盖了底层(按 z 顺序)路径所覆盖的所有点,但不包括顶层路径——换句话说,它从底层中减去了顶层。结果具有底层对象的样式:
![从另一个路径中减去路径]()
图 12-8. 从另一个路径中减去路径
如果路径不重叠,路径 ▸ 差集将简单地删除顶层路径;如果顶层路径完全覆盖底层路径,结果将是空的(对象被删除且无物被选中)。这是创建孔和擦除不需要的路径部分的主要工具。
注意
*书法笔(14.3 书法笔工具)在您使用
*绘制时将创建的新路径与所选路径合并,在您使用
绘制时则从它中减去。
交集 (
)
-
两个或更多路径的交集创建一个路径,其填充仅覆盖所有原始路径都覆盖的点。它使用最底部的选定对象的样式来创建其结果路径:
![交集路径]()
图 12-9。交集路径
如果所选路径中至少有两条不重叠(即,它们的交集为空),路径 ▸ 交集将删除所有路径而不创建任何内容。此命令与设置剪切路径(18.4 剪切和蒙版)类似,但剪切路径是非破坏性的,并且适用于任何对象,而不仅仅是路径。另一方面,交集允许您同时交集任意数量的路径。
排除 (
)
-
两个重叠路径的排除创建一个路径,其填充仅覆盖原始路径中仅一个覆盖的点。它使用底部对象的样式来创建其结果路径:
![从另一条路径中排除路径]()
图 12-10。从另一条路径中排除路径
当两条路径不重叠时,路径 ▸ 排除的结果与路径 ▸ 合并的结果完全相同。当它们重叠时,结果看起来与合并完全一样,但实际上路径是不同的:它在原始路径轮廓相交的点处有新的节点,而合并则不会创建新的节点。
分割 (
)
-
两条路径的分割通过顶部路径的边缘将底部路径切割成单独的部分,删除顶部路径:
![通过另一条路径分割路径]()
图 12-11。通过另一条路径分割路径
AI
这是 Inkscape 中与 Adobe Illustrator 中的刀片工具最接近的工具:使用钢笔或铅笔工具(第十四章)来绘制要切割的路径,
点击该路径,然后选择路径 ▸ 分割来切割它。
切割路径 (
)
-
这个操作类似于除法。主要区别在于切割路径不会在切割线上创建任何新的节点或段,因此留下的结果路径是不封闭的。它还会移除正在切割的路径上的任何填充。对于切片填充路径,自然使用除法,而对于切割无填充的路径,使用切割路径:
![切割路径类似于除法。]()
图 12-12. 切割路径类似于除法。
12.3 简化
在路径上的一个非常重要的操作是简化。当你简化一个路径(路径 ▸ 简化 或 ![httpatomoreillycomsourcenostarchimages1735764.png.jpg]),Inkscape 会尝试使用更少的节点重新绘制该路径,消除较小的细节但保留大规模特征和整体形状。如果这个描述听起来有点模糊,那是因为这个操作本身并不是完全确定的;通常,在真正尝试之前很难准确预测简化的结果。即使节点数量的减少也不是保证的,尽管这是常见的。
尽管如此,它是一个非常常见的操作,对于某些艺术风格的绘图来说,它是一个真正的救星。另一方面,在技术绘图中,它很少有用,仅仅因为它将路径中的任何尖锐角视为“缺陷”,应该被平滑掉。
你几乎可以肯定的一个效果是,如果你的路径上有可以删除而不改变路径形状的节点,它们将会在简化过程中被删除。这包括你使用节点工具(12.5.3 删除和创建节点)或添加节点扩展(13.3 路径扩展)添加的任何节点,但从未从初始位置移动过。
路径简化与渐变工具中的渐变简化类似,也可以通过访问。渐变简化也是如此,它会移除你添加但尚未从初始位置移动的任何渐变停止点。
任何简化操作都使用一定的力量。弱简化只会稍微改变路径,仅删除最明显冗余的节点。更强的简化将会改变路径更多,并平滑掉其中的较大凸起。
当你按一次
时使用的默认力量可以在Inkscape 首选项对话框的杂项选项卡上的简化阈值值中设置。默认值为 0.002;任何大于 0.01 的值可能对大多数情况来说都太强了。如果你要更改它,请考虑降低此值,因为它实际上是最小简化力量;你可以随时临时增强你的简化命令,提高此值而不必进入Inkscape 首选项对话框。
如何让简化功能变得更强大?只需快速连续地按几次
。每次调用命令都会稍微增加力量,前提是它发生在前一次调用后不到半秒内。通过这种加速简化,你可以为每条路径应用所需的确切简化量。如果第一次按键没有足够平滑路径,只需继续按
,它将逐渐加速。不过,如果你等待超过半秒,简化力量将重置为Inkscape 首选项中的默认值。

图 12-13. 简化路径
图 12-13 展示了简化如何影响路径的一些示例(参见图 12-2,该图是通过逐渐简化最节点丰富的玫瑰轮廓产生的)。正如你所见,除了减少节点数量和消除小细节外,此操作还会使尖锐的角和曲线变得直线,产生一种自然且常具有艺术吸引力的扭曲。
12.4 偏移
偏移路径意味着以这种方式扩展或收缩它,使得每个点都沿着该点的路径垂直移动。向内偏移称为内嵌,向外偏移称为外嵌。想象一下你的路径是一个岛屿;那么,外嵌意味着通过将海岸线的每个点向外移动相同的步数来扩大它,而内嵌则通过允许海水在各个地方向外侵吞相同的步数来缩小它:

图 12-14. 偏移路径
要内嵌选定的路径或路径,请按
(内嵌 2 个像素),或
(在当前缩放下内嵌 1 个屏幕像素),或
(内嵌 10 个屏幕像素)。要外偏移路径,请使用带有相同修饰符的
键。在大多数键盘上,
和
与
和
相同,因此数字将像括号一样工作。
偏移量用于那些你想在不改变路径整体形状的情况下,使路径“更粗”或“更细”的情况。这对于阴影、轮廓、光环、斜边等非常有用。(有时,你可以在路径上简单地设置一个足够宽的描边,颜色与填充相同,而不必使用外偏移。)
如果你多次对外偏移和内嵌路径,它将以一种特征性的方式变形,类似于简化变形(12.3 简化),但又有区别。这种变形将路径的一部分焊接在一起,圆滑角落,平滑交叉点,并在路径内融合接近的笔触。例如,尝试将一幅画的所有笔触合并在一起,并对它进行几次内嵌/外偏移循环,使其看起来更自然、更磨损,如图图 12-15 所示。
偏移量,就像简化一样,是一种破坏性操作:除非撤销,否则你不能恢复原始路径的精确形状。(例如,偏移一个开放路径总是将其关闭。)然而,Inkscape 还有两种动态对象类型,链接偏移和动态偏移,它们存储了原始路径的精确形状,并允许你调整偏移量而不累积变形(13.2 动态和链接偏移)。

图 12-15. 使用重复偏移熔化复杂路径
此外,虽然内嵌和外偏移命令将相同的偏移距离应用到整个路径上,但也可以使用调整工具的增长和缩小模式(例如,12.6.4 缩放/增长模式)来仅对路径的一部分(例如,书法笔触的一端)进行内嵌或外偏移。
12.5 节点工具
就像 Inkscape 的所有工具一样,节点工具——主工具栏中从上数第二个按钮,也可以通过按
或
访问——旨在使简单的事情变得容易,使困难的事情成为可能。这可能是所有 Inkscape 工具中最复杂的;无论如何,节点工具中可用的键盘和鼠标快捷键数量比任何其他工具都多。你当然不必知道它的所有技巧才能有效地使用 Inkscape,但你确实需要了解基础知识。
12.5.1 路径显示
切换到节点工具后,任何单个选定的路径都会显示其节点为小灰色方块、菱形或圆形(取决于每个节点的类型,12.5.5 节点类型)。
注意
截至版本 0.47,节点工具最大的限制是它一次只能编辑一个选定的路径。如果你选择两个或更多路径,它们不会显示其节点且不可编辑。然而,你可以同时编辑路径的多个子路径。
可以选择一些或所有节点,在这种情况下,它们会变成蓝色并略微增大。手柄仅对选定的节点及其相邻节点可见。即使如此,当不需要时,可以通过控制栏上的按钮来抑制这些手柄,如图 12-16 所示(图 12-16)。
在节点工具中,默认情况下,选定的路径本身不会被以任何特殊方式可视化。通常,你只需观察路径的描边和/或填充,这些会实时更新以响应节点的编辑。然而,有时你的路径可能过于透明,或者模糊,或者应用了某些路径效果;在这种情况下,你可以通过在控制栏上切换另一个按钮来要求 Inkscape 用红线突出显示实际路径(图 12-17)。

图 12-16. 节点和贝塞尔手柄在节点工具中

图 12-17. 节点工具中的路径突出显示
除了路径本身之外,一些对象可能还与其他路径相关联,这些路径虽然不可见但会影响路径的外观。您也可以使用节点工具编辑它们。有三个切换按钮可以将工具切换到编辑剪切路径(绿色,18.4 剪切和蒙版)、蒙版路径(蓝色,18.4 剪切和蒙版)以及与路径效果相关的路径(深绿色,13.1.2 路径效果编辑器对话框)。
虽然节点工具专门用于编辑路径,但每个具有某种编辑手柄的对象在选中此工具时都会显示它们。这意味着您可以使用节点工具,例如,使矩形11.2.2 圆角、重塑星形11.5.2 手柄、编辑渐变10.4 手柄或更改流动文本的尺寸15.2.2 流动文本。
12.5.2 选择节点
就像 Inkscape 中的许多其他事物一样,路径的节点在节点工具中可以被选择。不出所料,大多数节点选择方法都与对象选择方法非常相似(第五章)。
注意
与选定的梯度手柄(10.4.2 绘画)不同,选定的路径节点不能被样式化。只有整个路径可以拥有样式,而不是它的节点。
在我们探讨在路径中选择节点之前,值得注意的是,该工具还可以选择对象(记住,对象选择是 Inkscape 中所有工具和命令的共同点)。因此,在节点工具中,您可以使用从选择工具中了解的一些快捷键:点击选择一个对象(忽略分组),
-点击添加到选择,
-点击选择与选择工具相同的方式选择(5.9 从下方选择对象)。
要选择一个单个节点,只需点击它。节点变为蓝色,并且比灰色未选择节点略大。
-点击添加节点到节点选择;选定的节点不需要相邻,也不需要都在同一路径上。橡皮筋选择(拖动一个矩形围绕节点,比较5.7 使用橡皮筋选择)也有效;拖动时
将橡皮筋内的节点添加到选择中。
如果你点击两个节点之间的路径段,两个节点都会被选中。点击路径外的空白区域会取消选择任何节点,按下
键也会取消选择。
方便的
和
键,在选择工具中用于跳转到下一个或上一个对象,在这里用于跳转到路径上的下一个或上一个节点。当达到最后一个节点时,按下
键会跳转到第一个节点;当达到第一个节点时,按下
键会跳转到最后一个节点。(例如,按下
键几次是一种快速确定(子)路径方向的方法,而无需以任何方式更改文档。)
同样,在选择工具中,
会选择路径上的所有节点。然而,如果你已经在某个子路径中选择了一些节点,那么
只会选择该子路径中的所有节点(类似于选择器,其中
只选择当前图层内的对象)。要始终选择所有子路径中的所有节点,请使用
。
键在具有选择节点的子路径中反转选择(选择未选择的,反之亦然);
在整个路径上执行相同的操作。
选择节点的另一种方法仅适用于节点工具。当你将鼠标悬停在节点上时,你可以通过旋转鼠标滚轮或按下
和
键来展开或收缩选择。将滚轮向上旋转一格或按下
键会将最近的未选择节点添加到选择中;将滚轮向下旋转一格或按下
键会取消选择最远的已选择节点。
为了确定“最近”和“最远”的节点,Inkscape 会测量每个节点到鼠标指针的直接空间距离。然而,如果你在旋转滚轮或按下
键、
或
键时,距离将沿着路径计算,并且选择将限制在你悬停的子路径上。
12.5.3 删除和创建节点
删除任意数量的选定节点就像按下
或
或点击控制栏上的“减号”按钮一样简单。
删除子路径的端节点会使子路径变短,但你不能通过删除节点来打开闭合的子路径;你需要像在 12.5.4 连接和断开 中描述的那样将其断开。
当删除中间节点(位于其他节点之间的节点)时,Inkscape 会将正在删除的相邻节点组替换为单个贝塞尔曲线段。在大多数情况下,这样做而不产生扭曲是不可能的,尽管 Inkscape 会尽量减少这种扭曲:它会调整剩余节点上的手柄,以便新的贝塞尔段尽可能接近它所替换的路径部分。因此,在路径中删除一些节点通常就像执行一个局部的 简化 命令(12.3 简化)。
有时,你可能不想让新的贝塞尔曲线完全凸出以替换你正在删除的节点,或者你想要避免改变剩余节点的手柄。在这种情况下,只需按下
或
:

图 12-18. 删除节点
与删除不同,插入 新节点在任何路径的任何位置都是可能的,而不会改变其形状。只需在路径上(即笔触的中心线或填充的边缘)双击或
点击你想要新节点出现的位置。新节点将被插入,并且其相邻节点的手柄会自动调整,以保持路径的形状不变:

图 12-19. 通过点击创建节点
另一种节点创建方法不需要鼠标点击。只需选择两个或多个相邻节点,然后按
(或在控制栏上点击“加号”按钮)以在每个相邻对中间插入一个新节点(参见图 9-11)。由于新节点随后被添加到选择中,这是一种快速增加路径上节点数量的方法;例如,如果您从两个节点开始并按
8 次,您的路径将有 257 个节点(2⁸ + 1)。这与通过按
创建新的渐变停止非常相似(10.5.1 创建中间停止)。
另一种方法是复制节点。选择任意数量的节点,按
;对于每个选定的节点,这将在相同的位置创建并选择一个副本节点。如果您现在通过按
将复制的节点移开,它将看起来像这样:

图 12-20. 复制节点
特别适用于通过复制并移动其端节点来继续开放子路径。例如,如果您选择一个与直线段相邻的端节点(即没有贝塞尔手柄),您可以通过多次
后跟箭头键来轻松地使用线段“绘制”。
12.5.4 连接和断开
通常,您会切换到节点工具以连接或断开子路径,或将开放子路径变为闭合或反之亦然。(由于节点工具还不能编辑多个路径,除非您首先将它们组合,否则您不能使用它来连接不同的路径。12.1.1 子路径。)
要连接两个端节点,首先选择它们。这些可以是同一开放子路径的端节点,在这种情况下,连接它们将关闭该子路径;或者,它们可以属于不同的子路径,在这种情况下,您将把这些子路径连接成一个单一的子路径。
有两种连接方式,对应于节点控制栏上的两个连接按钮。第一种方法,通过连接节点按钮或按
实现,实际上将两个端节点移动并连接到它们原始位置中间的单个节点。第二种方法——用段连接按钮——将端节点留在原位,但在它们之间添加一个新的路径段。如果你想使用第一种方法,但不想移动其中一个端节点,将鼠标悬停在其上,在按
的同时锁定其位置:

图 12-21. 连接节点和插入段
类似地,有两种方法可以打断路径。对于第一种方法,选择一个或多个非端节点,然后点击打断节点按钮或按
。这将复制每个选定的节点,但不会将其连接到原始节点,因此路径将在每个选定的节点点上被打断。对于第二种方法,选择两个相邻的非端节点,然后点击删除段按钮以删除它们之间的段:

图 12-22. 打断节点和删除段
12.5.5 节点类型
中间节点可能有一个或两个手柄附着在其上,每个侧面一个。Inkscape 支持几种节点类型,当你拖动这些手柄或节点本身时,它们的行为会有所不同。

图 12-23. 节点类型:尖点、平滑、半平滑、对称和自动
-
如果一个节点没有手柄(它们都是缩回的),或者一个手柄与对面的段不共线,或者当你拖动另一个手柄时,一个手柄保持不动,这样的节点被称为尖点节点,因为当它的两个控制点成角度时,节点表示路径中的尖锐转折(尖点)。尖点节点以小菱形形状表示。
-
如果另一个手柄旋转,以便始终与移动的控制点共线(在相同的直线上),则这样的节点被称为平滑节点,因为它使路径流畅。平滑节点以方形表示。
-
节点可能只有一个手柄——也就是说,它可能在一侧有一个贝塞尔曲线,而在另一侧是直线段——并且节点唯一的手柄可能被锁定,始终与线段共线。这样的节点被称为半平滑节点,也以方形表示。如果你拖动一个半平滑节点,其手柄会自动旋转,以便始终与线段共线。
-
另一个手柄可以旋转和缩放,以便始终与移动的控制线共线,并且长度与移动的控制线相同。这样的节点被称为对称,因为其手柄总是围绕它对称。对称节点也以正方形表示。
-
自动节点,以圆形表示,是特殊的:当你移动它们时,它们会自动移动其手柄。你不应该尝试手动调整自动节点的手柄;如果你这样做,节点会立即从自动转换为平滑。因此,如果你使用自动节点,最好使用控制栏按钮隐藏手柄,以免妨碍(参见图 12-16)。
自动节点调整其手柄的角度和长度,以便使相邻的路径段尽可能平滑。如果相邻的节点也是自动的,它们的手柄也会相应地调整。例如,当你将自动节点 A 移动到自动节点 B 更近的位置时,两者都会使它们的手柄逐渐变短并旋转,以便使它们之间的曲线尽可能低,同时保持节点平滑性。这种行为的结果让人联想到斯皮罗样条路径效果(13.1.7 斯皮罗样条)。
要在循环中更改节点类型(尖角到平滑到对称到自动再回到尖角),
-点击它。选择一个或多个节点后,你可以点击控制栏上的节点类型按钮,或使用键盘快捷键:
-
按下
以将选定的节点转换为尖角。第一次
只是更改节点类型,但不会更改手柄;第二次
将收回选定节点的所有手柄。 -
按下
以将选定的节点转换为平滑。如果一个节点与直线段相邻,第一次
将使其半平滑,将单个手柄锁定到线段的方向;另一次
将延伸第二个手柄,使节点完全平滑。 -
按下
以将选定的节点转换为对称。 -
按下
以将选定的节点转换为自动。
将路径上的所有节点从尖角变为平滑或自动,会以特有的方式扭曲路径,移除直线和尖锐的拐角:

图 12-24. 在整个路径中转换节点类型
12.5.6 移动句柄
修改贝塞尔曲线段形状的最简单方法不是拖动任何节点或句柄,而是直接拖动曲线本身。这不需要选择任何节点,也不会移动任何节点。Inkscape 会简单地调整两个相邻节点的贝塞尔句柄,以便曲线始终跟随你的鼠标:

图 12-25. 曲线拖动
注意
如果一个节点是平滑或对称的,拖动该节点一侧的曲线也会改变其另一侧的曲线,因为其中一个节点句柄的移动会被其另一个句柄镜像。在自动节点旁边进行曲线拖动会将节点转换为平滑节点。
当然,你也可以简单地拖动任何选定节点(如果看不到句柄,请检查是否在控制栏上按下了显示句柄按钮,图 12-16). 注意,与节点不同,句柄不能被选择,尽管它们只显示在选定节点及其路径上的相邻节点。
当按下
时,你正在旋转的句柄会跳到 15 度的增量。当按下
时,同一节点的另一个句柄会以相同的角度旋转(即使是平滑节点,即使没有按下
也是如此)。最后,使用
锁定句柄的长度,只改变其角度。这些修饰符可以以任何组合方式工作。
注意
当你拖动句柄时,Inkscape 的状态栏会报告该句柄的当前长度和角度。
你也可以使用键盘快捷键来移动节点句柄。在12.5.7.3 节点变换中,我们将看到
和
键可以缩放,而
和
键可以旋转多个选定的节点,就像它们是一个对象一样。非常自然地,当你有一个单个节点被选中时,这些相同的键会旋转和缩放(即改变长度)该节点的贝塞尔句柄,而不会移动节点本身:

图 12-26. 使用键盘快捷键调整节点句柄
如果你有一个贝塞尔曲线但需要直线段,或者反过来呢?实际上,一条直线只是具有两个手柄都缩回的贝塞尔曲线的特殊情况,即与相应的节点重合。要缩回一个手柄,
-点击它;要从节点中拉出一个缩回的手柄,
-将其从该节点拖动出来。
另一种将贝塞尔曲线转换为直线并反之亦然的方法是使用控制栏上的两个段类型按钮。这些按钮要求至少选择两个相邻的节点,但它们也可以在所选节点之间的任何数量的段上工作。将段转换为直线按钮(或
)会缩回任何拉出的手柄;将段转换为曲线按钮(或
)本身不会使段曲线化,但它会拉出手柄并将它们沿着段放置,之后你可以将它们转换为平滑:

图 12-27. 更改段落的类型
12.5.7 移动节点
重新塑造路径的最简单方法是通过选择其一些节点并移动它们。属于这些节点的贝塞尔手柄将与它们平行移动(除了半平滑和自动节点,它们在拖动时可能会旋转手柄)。
与选择器类似,简单的点击并拖动可以移动单个未选择的节点;如果你拖动一个已选择的节点,你将拖动所有已选择的节点。当按下
时,鼠标拖动被限制在水平和垂直方向上。如果你在拖动时按下
,你正在编辑的路径将被复制(与选择器的复制功能进行比较,4.4 复制、剪切、粘贴和复制)。
箭头键以与选择器工具相同的方式和距离移动所选节点(6.5.1 移动):没有修饰符时为 2 px(默认值),按
时为该距离的 10 倍,按
时为 1 个屏幕像素,按
时为 10 个屏幕像素。
一个更有趣的技术是在按下
的同时用鼠标拖动节点。这限制了移动到拖动节点贝塞尔手柄的方向及其垂直方向。如果一个节点在一侧有直线段,那么该段的方向将代替手柄。因此,如果节点的两个手柄或相邻段是共线的,你可以使用
-拖动它在四个方向之一;否则,在八个方向之一:

图 12-28. 按下
时拖动节点的方向
你可以使用
-拖动多个选定的节点;在这种情况下,移动将仅限于你用鼠标实际拖动的节点的手柄和段。
根据文档设置,鼠标拖动的节点可能会吸附到参考线、网格以及其他对象或节点上(默认情况下,吸附到参考线和网格是启用的,但吸附到对象上则不是)。然而,你可以通过按下
来临时禁用吸附。
12.5.7.1 对齐节点
单个选定节点的坐标在节点工具的控制栏中的 X 和 Y 字段中显示;编辑这些值将选定节点移动到新坐标:

图 12-29. 使用 X 和 Y 可编辑字段对齐节点
如果你选择了多个节点,这些字段显示它们的 平均 坐标——或者换句话说,就是选定节点的几何中心坐标。在这种情况下,在这些字段之一中输入一个值将此坐标分配给所有选定的节点,这相当于 对齐 所有选定的节点水平(如果你编辑 Y)或垂直(如果你编辑 X)。
另一种对齐节点的方法是使用你可能已经用于对象的工具:对齐和分布对话框(7.4 对齐)。当你切换到节点工具时,此对话框隐藏了所有对象对齐和分布按钮,并显示四个按钮,允许你水平和垂直对齐和分布选定的节点。
12.5.7.2 节点雕刻
我们迄今为止看到的所有方法都使所有选定节点移动相同的距离。通常,这正是你所需要的。例如,在左侧的简单面部轮廓图图 12-30 中,你可以通过选择两个节点并将它们向右拉动来轻松地使鼻子变长;对于这种绘图风格,结果是可接受的。然而,如果你有一个更复杂、更逼真的带有许多节点的绘图,如右侧所示,你该怎么办?无论你选择多少个节点,拖动它们都会引入不连续性并破坏面部的自然轮廓。

图 12-30. 拉动两个鼻子
在这种情况下,能够以不同的距离移动不同的节点,使得鼻尖移动得最远,而随着你沿着路径远离尖端,其他节点移动得越来越少,那将是非常好的。这正是 Inkscape 在你选择鼻子的所有节点并使用
拖动其中一个节点时所做的。这种技术被称为节点雕刻。
在最简单的情况下,当所有选定的节点都在同一直线上时,
-拖动中间选定的节点会将路径弯曲成平滑的钟形曲线。最远的选定节点保持不动;被拖动的节点移动到最远;其他所有选定节点以某种中间距离移动。现在,如果你的选定节点形成了一条波浪线、文本转换为路径或一个逼真的鼻子,
-拖动将平滑地弯曲它们,同时保留其特征:

图 12-31. 使用
雕刻节点
注意
在通过拖动确定要移动哪些节点以及移动多少距离时
,被拖动节点的距离是沿着一条直线(空间上)计算的,而不是沿着路径。
如果你有一个压感笔,你会注意到在拖动时节点雕刻受笔压的影响。弯曲的轮廓始终是钟形的,但低笔压时这个钟形很窄且尖锐;大多数选定节点保持在其初始位置附近。随着你增加压力,钟形变宽且更钝,因为更多的节点在拖动方向上移动得更远。为了避免在抬起笔时失去压力,首先释放
,然后才抬起笔。

图 12-32. 笔压对节点雕刻的影响
如果你想要雕塑的路径部分节点不足,只需选择那里的节点,然后按
几次,以填充路径的这一部分节点。当使用许多密集节点雕塑复杂形状时,例如位图追踪(18.8 追踪),隐藏它们的贝塞尔手柄(通过在控制栏上取消按下切换按钮),以免妨碍操作,并从节点扩展选择(12.5.2 选择节点)。
节点雕塑与调整工具(12.6 路径调整)类似,因为它使路径编辑更加自然,并允许你从简单形状中发展出复杂形状。然而,与调整工具不同,这种技术不会创建或删除节点,整体上更确定。因此,重复应用调整工具到复杂路径最终会简化并降低其所有内容,即使你不使用工具触摸它们,也会消失小细节。使用节点雕塑,只有选定的节点受到影响,无论你多少次按
-拖动选定的节点,都不会发生退化。
12.5.7.3 节点转换
“节点转换”是什么意思?我们已经知道许多移动节点的方法,甚至可以雕塑它们。这有什么不同?
记住,使用选择工具时,第六章不仅包括移动,还包括缩放和旋转(第六章). 这些转换对于路径中的一组节点来说也很有意义——如果你将这样的组视为一个“对象”。目前,此功能仅通过键盘快捷键可用。
就像在选择工具中一样,
和
键缩放选定的节点,而
和
键整体旋转它们(图 12-33). 没有修饰符时,旋转以 15 度增量进行,缩放以 2 px 进行;按下
的相同键以当前缩放旋转和缩放 1 屏幕像素。用于水平翻转(反射)的
和
键也有效。
默认情况下,缩放、旋转和翻转是在选定节点的几何中心进行的。然而,如果你将鼠标光标悬停在其中一个节点上,它将保持固定,而所有其他选定的节点将围绕它进行缩放或旋转。例如,你可以通过按
选择一个对象的全部节点,然后使用
和
旋转整个对象围绕其任一节点。

图 12-33. 变换选定的节点
12.6 路径调整
我们已经在8.7 颜色调整中看到 Tweak 工具(
,
)可以用来在对象上绘画和抖动颜色,在6.9 使用 Tweak 工具变换中,我们看到它可以用来移动和变换对象。这个多才多艺的工具的其他几种模式——推,缩小/放大,吸引/排斥和粗糙化——用于编辑路径的形状。
AI
Tweak 工具的路径编辑模式在 Adobe Illustrator 最新版本中与 Pucker 和 Bloat 工具有些相似。
Tweak 工具对路径的编辑方法与 Node 工具的方法根本不同。Node 工具如其名,允许你编辑节点,你需要对节点如何定义路径形状有良好的工作知识。使用 Tweak 工具时,你可以忘记你曾经知道的关于节点的一切;只需将你的路径作为一个可塑体,就像一团建模粘土,在任何点和任何方向上弯曲和塑造它。虽然对于技术绘图几乎无用,但调整路径对于创建如卡通等艺术图像却极为方便。
Tweak 工具可以在任意数量的选定对象上工作。例如,你可以选择所有 (
) 并在推模式下“涂抹”你的整个绘图。你还可以将调整应用于对象组;该工具会进入组内并作用于组内的单个路径。如果你尝试在不选择任何对象的情况下使用它,它将通过状态栏消息提醒你先选择一些对象。
备注
截至版本 0.47,Tweak 工具在开放路径上无法正确工作——如果你对其进行调整,开放路径会变成闭合路径。
12.6.1 宽度和力度
在 Tweak 工具的任何模式下,您都可以使用一个圆形的笔刷(以光标为中心的橙色边缘圆圈)来“绘画”覆盖选定的对象以改变它们。笔刷的大小由宽度参数控制,它施加的动作量取决于力量参数(如果您有压力敏感的平板电脑,还包括笔压)。有关这些参数的更多详细信息,请参阅6.9 使用 Tweak 工具进行变换。
学习在正确的位置施加适当的拖动力(包括笔压),并使用正确的笔刷大小以获得所需的结果需要实践。然而,这项技能非常值得——使用 Tweak 工具,你可以完全控制绘图中的路径;过去使用节点工具时尴尬且耗时的工作现在变得快速而自然。
12.6.2 保真度
对路径的任何微调都会略微扭曲——更准确地说,简化——整个路径,包括您甚至没有用笔刷触及的部分。
保真度值允许您控制这种寄生虫简化的程度。这里的权衡是结果路径中的节点数量;低保真度会导致结果路径节点较少,但可能比您能接受的扭曲程度更大,而高保真度最小化扭曲,但路径可能最终会有很多节点,这会增加 SVG 的大小并减慢 Inkscape 的速度。
最佳的保真度值取决于您艺术品的性质。如果您正在雕塑一个无定形的块状物,您可以使用大约 20 的低保真度。然而,如果您正在推动或扩展已转换为路径的文本字符串,并希望扭曲区域外的字母尽可能干净和可读,您需要将保真度提高到 80 或更高。
注意
Tweak 工具通过将路径重新塑造成一个具有数千条微小直线边的“逼近多边形”,调整该多边形的顶点,然后将其重新塑造成具有贝塞尔段的逼近路径。保真度控制这种转换的精度以及结果中的节点数量,但没有任何保真度设置会给出原始路径的确切节点——它们总是会移动一些,就像在简化之后一样。
12.6.3 推模式
Push 是 Tweak 工具的默认模式。要从任何其他模式切换到推模式,请按
,或单击控制栏上的按钮。
Push 是一种通用雕塑模式。当您在此模式下拖动时,被笔刷覆盖的选定路径部分会沿着您的拖动方向移动,直到鼠标按钮或笔被按下:

图 12-34. Tweak 工具的推模式
根据需要调整笔刷宽度,你可以将任何路径推入几乎任何其他路径——但你也可以用它进行小的调整,例如将凸起压平、弯曲附属物或弯曲雕刻网格。多亏了笔刷的钟形轮廓,你推动的路径会相应地柔和、平滑地弯曲:

图 12-35. 在 Push 模式下绘制路径
12.6.4 Shrink/Grow 模式
Shrink/Grow 模式(
)将路径的每个点移动到该点路径边缘的垂直方向,要么向内(收缩,普通拖动)要么向外(生长,拖动
)。要从工具的任何其他模式快速访问此模式,
-拖动以收缩,
-拖动以生长。
Shrink/Grow 模式与Inset和Outset命令(12.4 Offsetting)非常相似,但 Tweak 工具始终对路径的一部分而不是整个路径进行柔和的处理。通常,此模式用于照亮或加深由许多细节组成的绘图的部分,如雕刻、自由手绘草图,甚至文本(转换为路径):

图 12-36. Tweak 工具的 Shrink/Grow 模式
与 Push 模式不同,Shrink/Grow 模式不需要你实际拖动;你只需点击并保持,路径就会在你的笔刷下膨胀或收缩。然而,你也可以拖动来追逐路径的移动边缘;这样,使用小尺寸的笔刷,你可以从路径中生长出任何长度的附属物和分支。(这种生长也可以在 Push 模式下完成,但 Grow 在这个任务上要容易一些。)此外,Shrink 模式也可以作为快速橡皮擦使用。在这个模式下,切割路径、蒸发小块和碎片、修剪长笔刷非常容易:

图 12-37. 将 Shrink 模式用作橡皮擦
12.6.5 Attract/Repel 模式
Attract/Repel 模式(
)通过将路径上受影响的每个点移动到(吸引,普通拖动)或从(排斥,拖动
)光标点,挤压和爆炸任何落在笔刷下的路径。在某些情况下,这看起来可能类似于 Shrink/Grow,但区别在于 Attract/Repel 不关心被调整的路径的方向。此模式相对于笔刷的中心对称地移动所有内容:

图 12-38. Tweak 工具的 Attract/Repel 模式
12.6.6 粗糙模式
粗糙模式(
)随机扭曲了你用画笔应用路径的边缘,而不改变路径的整体形状,如图图 12-39 所示。轻微的粗糙化只是使边缘变得弯曲和不规则,而强烈的粗糙化则会撕裂边缘并将其爆炸成随机的块状和斑驳。

图 12-39. Tweak 工具的粗糙模式
注意
这种操作,尤其是高保真度的情况下,会添加很多节点。这样的粗糙路径总是很难编辑——使用节点工具处理起来很笨拙,使用 Tweak 工具可能非常缓慢。因此,你应该首先通过推、生长和缩小来最终确定路径的整体形状,如果需要的话,再进行粗糙化作为最后一步。
第十三章。路径效果和扩展
尽管上一章内容详尽,但它并没有涵盖 Inkscape 中关于路径的所有知识。这一章篇幅较小,但随着 Inkscape 的持续发展,在未来的版本中它有可能变得更大。路径效果(13.1 路径效果)首次出现在 0.46 版本中;它们在 0.47 版本中真正开始流行,并且在未来版本中可能会进一步增长。处理路径的扩展(13.3 路径扩展)是另一个持续增长的领域;在未来,其中一些可能会被转换为路径效果,以提高交互性和与程序其他部分的集成。
13.1 路径效果
路径效果 是一个易于使用(对于最终用户)且功能强大的(对于开发者)机制,用于实现路径可见形状的修改——例如,将所有角落圆滑,使其粗糙,膨胀或挤压。无论将哪种路径效果应用于路径,效果应用前的 原始 路径仍然可以查看和编辑——在你编辑原始路径之后,可见 的路径会自动从原始路径和效果参数中重新计算。
因此,Inkscape 中的路径效果是矢量图形基本原理的另一个例子:而不是做出一些永久性和破坏性的改变,保持原始对象不变,只是记录这种改变应该如何应用。之后,原始对象及其应用到的改变参数可以在任何时候分别进行编辑。
13.1.1 路径效果如何工作
尽管名为路径效果,但它们不仅适用于路径,也适用于形状(第十一章),这些形状仍然保持形状,并且可以使用形状工具中的手柄或数值参数进行编辑。然而,路径效果不适用于文本对象、克隆或位图。路径效果可以应用于组,这会产生与将效果应用于组中所有路径和形状 组合(即,成为单个路径的子路径)相同的结果。

图 13-1. 将 Sketch 效果(13.1.6 Sketch)应用于路径(左)和 3D 盒子(右)
当路径效果应用于对象时,唯一改变的是对象的 可见形状;如果你想以非破坏性的方式改变其 样式,尝试使用过滤器而不是(第十七章)。路径效果可以堆叠在一起,使得一个效果的输出成为下一个效果的输入。
SVG
实时路径效果是 Inkscape 独有的功能;与例如过滤器不同,路径效果不是 SVG 标准的一部分。然而,它们以 SVG 兼容的方式实现:如果你使用带有路径效果的 SVG 文件加载到 SVG 查看器(或加载到不支持此效果的老版本 Inkscape),你将看到与 Inkscape 中相同的可见路径,但无法访问原始路径和效果参数。有一个注意事项:如果你尝试在不支持此效果的老版本 Inkscape 中编辑该可见路径,然后重新加载更改后的文件到支持此效果的新版本中,你的更改将会丢失,因为新的可见路径将基于未更改的原始路径和效果参数生成。
在一个应用了路径效果的path元素中,原始路径数据存储在inkscape:original-d属性中。路径的效果在inkscape:path-effect属性中指定,该属性引用一个元素,该元素与文档中的defs一起存储,并包含其参数(A.4 Defs, View, and Metadata)。效果的结果将自动重新计算并存储在路径对象的标准的d属性中。所有 Inkscape 工具和命令都知道,在应用了路径效果的路径中,它们不应该编辑或更改d,而是应该操作或显示inkscape:original-d。
要将一个对象的路径效果分配给任意数量的其他路径或形状,复制源对象(
),选择目标对象,并使用“粘贴路径效果”命令(
)。Inkscape 附带了一些示例 SVG 文件(在 Linux 上的/usr/share/inkscape/examples,在 Windows 上的
当你组合(12.1.1 子路径)形状或路径时,结果将具有最顶层对象的路径效果,如果有。将带有路径效果的路径拆分会导致效果应用于所有生成的新路径。
要清除路径效果并返回到原始路径,请使用“路径”菜单中的“移除路径效果”命令。然而,如果你想要保留效果的结果并忘记原始路径,请使用“对象到路径”命令(
);这不会改变路径的外观,但效果将消失。
SVG
“对象到路径”命令也是确保你的文件不仅在 Inkscape 的老版本中正确渲染,而且在除 Inkscape 之外的 SVG 编辑器中可编辑的最佳方式。
使用节点工具时,你正在编辑原始路径,而不是效果后的可见路径。由于你正在编辑的路径本身不可见,使用相应的工具栏按钮(图 12-17)来突出显示它很方便;大多数效果会自动为你启用此高亮显示。
13.1.2 路径效果编辑器对话框
路径效果编辑器 对话框(
,见 图 13-2) 是路径效果的主要控制中心。它列出了 Inkscape 支持的所有路径效果(此列表随着每个新的 Inkscape 版本而扩展),并允许你选择应用于所选路径、形状或组的那些效果。当选择了一个具有一个或多个路径效果的对象时,你可以使用此对话框查看其效果堆栈,添加或删除效果,并调整所选效果的参数。
注意
如果你对一个组应用了一些路径效果,你只能在选择该组时编辑这些效果的参数,而不能在选择组中的任何路径时编辑。
对话框中的 效果列表 列出了应用于所选对象的所有效果。它们按从上到下的顺序列出;也就是说,应用在源路径上的第一个效果是最上面的一个,其输出传递到第二个效果,依此类推,直到最后一个列出且其输出被显示的效果。
你添加的新效果被放置在堆栈的末尾。你可以通过列表下方的箭头按钮将堆栈中的任何效果向上或向下移动。每个效果名称前的眼睛图标允许你禁用效果,迫使 Inkscape 绕过它(效果参数中的 可见? 复选框具有相同的功能)。要从堆栈中删除效果,请使用带有减号按钮。
效果的参数可能属于几种类型:
-
数字 可以是整数或分数,具体取决于参数的性质。当一个数字表示距离时,它通常以
px单位表示(A.6 坐标和单位)。![路径效果编辑器对话框;选中的路径具有 Spiro 样条、Stitch Sub-Paths 和 Sketch 效果。]()
图 13-2. 路径效果编辑器对话框;选中的路径具有 Spiro 样条、Stitch Sub-Paths 和 Sketch 效果。
-
在 随机数参数 中,可编辑的数字指定随机值必须落在的范围,而骰子按钮重新洗牌由该参数控制的随机值:
![路径效果的随机数参数]()
图 13-3. 路径效果的随机数参数
-
链接参数用于当一个路径的效果使用其他路径作为其参数之一时。那个链接路径可以是一个位于画布上某个位置的独立对象(在同一文档中),或者它可以是完全存储在路径效果中且在文档中不可见的路径。
![路径效果的链接参数]()
图 13-4. 路径效果的链接参数
链接参数显示一行四个按钮:
编辑按钮
-
将 Inkscape 切换到节点工具,并允许您编辑该链接路径,无论它是一个独立对象还是存储在效果内部的路径(图 13-5). 在后一种情况下,该路径显示为绿色轮廓。
这与您手动切换到节点工具并点击控件栏上的编辑路径效果参数按钮相同。

图 13-5. 编辑路径效果的链接路径
复制按钮
- 将链接路径复制到剪贴板。
粘贴按钮
- 将剪贴板中的路径粘贴到效果中,复制剪贴板路径并将其存储在效果中。
链接按钮
- 将复制到剪贴板的路径链接到文档中的原始效果。现在,编辑您复制的对象将更改此路径的效果。
除了对话框中的数字控件外,一些路径效果允许您通过在节点或形状工具中可访问的画布上的手柄来直观地编辑它们的参数。当我们讨论特定效果时,我们将看到这方面的示例。
13.1.3 沿路径图案和弯曲
沿路径图案和弯曲效果非常相似。它们都取一个路径(称为图案)并将其弯曲和/或拉伸到另一个路径(称为骨骼)上。这与 Microsoft Expression 等软件中的“骨骼路径”非常相似,通常用于自由手绘(参见图 14-11)。
与路径效果通常一样,骨骼路径和图案在任何时候都保持可编辑状态,结果实时更新。这是一种创建易于编辑矢量画笔的好方法——例如,您可以从使用钢笔或铅笔工具创建一个绘图开始,然后尝试将其所有路径应用各种图案,调整宽度以获得最佳效果。

图 13-6. 沿骨骼弯曲图案
除了重复图案的能力之外,沿路径图案和弯曲效果之间的主要区别在于哪个路径是骨骼,哪个是图案:
-
在路径上的图案中,您应用效果的路径变成骨骼,图案是通过链接参数连接起来的。这种效果非常适合简单、可能重复的图案,应用于任意骨骼。链接的图案路径可以是文档中的独立路径对象,或者存储在效果内部的路径。结果是获得骨骼的样式。这是笔和铅笔工具中的形状选项所使用的效果(14.1.5 描边形状)。
一旦您将路径上的图案应用到骨骼路径上,您需要使用图案源链接参数提供图案。除非您首先粘贴或链接一些图案路径,否则编辑按钮不起作用,因此通常的操作顺序是:选择一个图案路径,复制它 (
),选择一个骨骼路径,将其分配为路径上的图案,然后粘贴或链接图案到它。或者,如果您在笔或铅笔工具的形状列表中选择从剪贴板,您还可以快速绘制应用了复制图案的骨骼。![路径上的图案效果]()
图 13-7. 路径上的图案效果
-
在弯曲模式下,您应用效果到的路径变成图案,而骨骼是通过链接参数连接起来的。当您有一个复杂的图案,希望沿着一个简单、可能共享的骨骼路径轻微弯曲时,这会更加方便。同样,链接的骨骼路径可以是文档中的独立路径,或者存储在效果内部的路径。结果是获得图案的样式。
对于这个效果,您从图案开始,使用弯曲链接参数将其链接到骨骼。然而,与路径上的图案不同,弯曲提供了一个默认的两个节点骨骼路径,它沿着您图案的水平轴延伸——因此您可以立即使用编辑按钮来编辑该骨骼。如果您愿意,您仍然可以从剪贴板粘贴骨骼或链接到复制的路径。

图 13-8. 弯曲效果
注意
您可以使用任何路径作为弯曲的外部链接骨骼,包括应用了其他路径效果的路径。
这两种效果都允许您更改图案的宽度。这个宽度可以用图案原始宽度的单位或骨骼长度的单位来衡量:

图 13-9. 调整图案的宽度
路径上的图案效果可以使用以下重复模式之一:
单重
- 在路径上放置单个图案副本,从起点开始,不拉伸它。因此,如果图案比骨骼短,它将只覆盖骨骼长度的一部分;如果图案更长(即甚至一次都不适合),则不会应用。
单个,拉伸(默认)
- 也放置单个图案副本沿骨骼,但始终拉伸或挤压它,使其正好适合骨骼长度。弯曲效果始终使用此模式;与沿路径图案不同,在弯曲中,重复模式不可更改。
重复
- 在骨骼路径上放置尽可能多的图案副本,但不会拉伸它们,因此骨骼长度超过一个图案长度的剩余部分保持未填充。(然而,这并不意味着图案的副本是相同的;骨骼的曲率可能会明显扭曲它们,如 图 13-10 所示。)
重复,拉伸
-
在骨骼上放置尽可能多的图案副本,并均匀拉伸它们,使它们正好填充整个骨骼长度。
![沿路径图案的重复模式]()
图 13-10. 沿路径图案的重复模式
图案始终从路径的起点开始;如果您想让它朝相反方向走,请使用 路径 ▸ 反转。
此外,沿路径图案效果还允许您调整一些 距离参数:
间距(仅适用于重复模式)
- 设置路径上图案副本之间的间距。
正常偏移
- 在每个点上将图案的所有副本沿骨骼路径垂直移动。
切向偏移
- 将图案的所有副本沿骨骼路径移动,第一个图案不是从骨骼的起点开始,而是从这个指定的距离开始。
这些偏移和间距参数默认情况下以绝对 px 单位表示。通过勾选 以图案大小为单位偏移 复选框,您可以将其表示为图案大小的倍数——例如,切向偏移 0.5 将将图案沿骨骼移动到图案宽度的一半。

图 13-11. 沿路径图案的间距和偏移
默认情况下,图案的原始位置被认为是水平的——也就是说,图案通过图案的水平轴与骨骼对齐。通过勾选 图案是垂直的(对于 沿路径图案)或 原始路径是垂直的(对于 弯曲)复选框,您可以旋转图案 90 度,使其垂直轴对齐,如图 图 13-12 所示。

图 13-12. 沿路径图案的图案方向
13.1.4 缝合子路径
非常有用的缝合子路径效果仅适用于具有两个或更多子路径的路径(12.1.1 子路径)。它用连接子路径上等距点的路径网格替换源路径;您可以通过参数设置连接路径的数量。使用此效果,您可以创建各种毛发、毛发、网格、莫尔图案或“力量场”:

图 13-13. 缝合子路径
注意
如果路径有三个或更多子路径,每对子路径都有自己的连接网格。这意味着随着原始子路径数量的增加,连接线的数量实际上会爆炸——所以不要在具有多个子路径的路径上尝试此效果,否则您将很容易使 Inkscape 陷入停滞!

图 13-14. 缝合三个或更多子路径
连接线不必是直的,尽管这是默认设置。您可以使用缝合路径链接参数粘贴或链接任何现有的开放路径作为缝合线,或者您可以使用节点工具编辑这些线条。缩放宽度参数按垂直于其起始-结束方向的方向缩放缝合路径(值为 1 给它其自然宽度)。相对于长度的缩放宽度使每条缝合线的宽度取决于该缝合线的长度,如图图 13-15 所示。

图 13-15. 调整曲线缝合路径的宽度
最后,一组随机化(方差)参数允许您分别对每条缝合线的开始和结束处的缝合点进行打乱,沿着路径(间距)和垂直于路径(边缘):

图 13-16. 随机化缝合的子路径
13.1.5 结
这种效果将路径分解为子路径,在它们之间创建间隙,路径(或一组路径)在这些间隙处自我交叉。它可以将具有自我交叉的描边路径转变为凯尔特结:

图 13-17. 在具有自我交叉的路径上的结效果
此效果的唯一数值参数指定了每个间隙的宽度(以px为单位)。在画布上,您可以单独控制每个交叉点。选择带有节点效果的路劲,切换到节点工具,并注意其中一个自交叉点有一个菱形手柄和一个绿色圆形指示器,该指示器在一侧是打开的。点击该手柄;指示器翻转至另一侧,此时间隙现在影响交叉点的另一条线。再次点击它,您将关闭交叉点并移除任何间隙;指示器现在是一个实心圆。您可以通过点击手柄来循环交叉点的这三种状态。要控制路径上的另一个交叉点,只需拖动手柄并将其放置在所需交叉点附近。
13.1.6 草图
草图是一种复杂的艺术效果,它将路径转换成带有多个笔触的草图样式的绘图,就像是一位试图找到最佳形状的艺术家手工绘制:

图 13-18. 草图效果
为了理解这个复杂效果的众多参数,请记住,草图由两种类型的痕迹组成:近似笔触和构造线。近似笔触覆盖整个路径;它们通常是曲线形的,或多或少与原始路径平行(带有一定的颤动),并且距离原始路径一定距离。另一方面,构造线通过绘制延伸到两侧的直线来标识和强调路径的直线或几乎直的部分。
对于近似笔触,您可以更改:
-
路径上每个点的平行笔触的平均数量(默认为五个)。将此参数设置为 0 以隐藏近似笔触(仅保留构造线);低值使草图显得轻盈和试探性,增加数量则使其更粗犷和嘈杂:
![更改近似笔触的数量(构造线已关闭)]()
图 13-19. 更改近似笔触的数量(构造线已关闭)
-
笔触的最大长度(以
px为单位)以及随机长度变化的范围(相对于最大长度)。 -
后续笔触的最大重叠(以
px为单位)以及此参数随机变化的范围(相对于最大重叠值)。 -
影响近似笔触跟随原始路径的末端容差。
-
近似笔触与原始路径的平均偏移;通过改变此参数,可以使草图显得整洁紧凑或宽大皱褶。
-
最大颤动及其频率;这些控制笔触围绕原始路径的振荡方式。增加最大颤动会使草图显得凌乱,类似于增加偏移但更随机;增加频率会使草图线条看起来更粗糙,因为它们在更小的尺度上颤动。

图 13-20. 改变近似线的颤动频率
对于构造线,您可以更改:
-
总数(非平均值)的行数在草图中的数量(默认为五行)。将此设置为 0 以抑制构造线,只留下近似线。
-
缩放参数告诉构造线的末端可以延伸多远超过路径的直线(或近似直线)部分的末端。
-
最大长度及其随机变化设定了构造线长度的上限:
![玩构造线(近似线已关闭)]()
图 13-21. 玩构造线(近似线已关闭)
13.1.7 斯皮罗样条
使用贝塞尔曲线构建路径(12.1.4 贝塞尔曲线)有着多年的传统。所有值得信赖的现代图形软件都以相同的方式支持它,数百万用户都熟悉它。贝塞尔范式无疑非常灵活和强大。我认为大多数曾经使用过它的人都会发现很难列出任何特定的主要缺点。
然而,一旦您尝试更好的东西,这些缺点就会变得痛苦明显。
斯皮罗样条是定义曲线路径的一种新颖方法,由 Raph Levien 开发。它们需要一些时间来适应,但对于某些任务(如字母形状设计)斯皮罗曲线相对于贝塞尔曲线具有明显的优势。从版本 0.47 开始,斯皮罗样条在 Inkscape 中作为路径效果提供,这意味着您可以在斯皮罗路径上使用所有方便的 Inkscape 路径工具(如移动和变换节点组、节点雕刻等)。钢笔和铅笔工具可以直接生成斯皮罗路径(14.1.4 模式)。
斯皮罗路径由一系列节点定义。然而,与由贝塞尔曲线组成的常规路径不同,所有斯皮罗节点都位于路径上,没有路径外的手柄。路径的曲率完全由节点的位置和类型定义。路径的行为非常类似于被强迫通过给定点的弹性杆,它使用最小的曲率来满足要求:

图 13-22. 将常规路径转换为斯皮罗路径并返回
一旦你掌握了基本概念,随着你对斯皮罗路径的熟悉,它的行为会变得越来越自然。更重要的是,生成的路径总是非常平滑——不仅仅是表面上平滑,即没有尖角,而且在更深层次上平滑,这是你需要经过大量繁琐调整才能用贝塞尔曲线实现的。
经历过斯皮罗路径后,很明显,贝塞尔曲线的主要问题在于每个节点不仅有一个位置,还有它自己的内在“方向”和“曲率”,这是由其手柄定义的。因此,每次你移动贝塞尔节点时,你还需要仔细调整其手柄,以确保曲线看起来仍然平滑自然。使用斯皮罗,你不需要满足这一要求;只需将节点移动到你想让曲线经过的位置,曲线的平滑性会自动处理。
注意
将斯皮罗路径转换为常规路径后,它会有两到三个倍的节点;现在,考虑到这些贝塞尔节点实际上是三个点(节点本身及其手柄)与斯皮罗节点的单个点相比——你就会明白斯皮罗路径编辑可以多么快和容易。

图 13-23. 使用斯皮罗路径创建的字母形状
要创建一个斯皮罗路径,选择任意路径并将其分配给斯皮罗样条路径效果。没有参数。你的路径的每个节点都成为斯皮罗路径的一个点,具体取决于节点的类型(12.5.5 节点类型):
-
平滑节点(那些有两个共线贝塞尔手柄的节点)是斯皮罗路径上的平滑点。请注意,源路径上贝塞尔手柄的长度和方向被忽略;唯一重要的是它们的共线性(即平滑性)。按
线性排列所选节点的手柄,使其平滑。 -
半平滑节点(那些有一个贝塞尔手柄与另一侧的直线段共线的节点)在斯皮罗路径上的行为完全相同:它们位于直线和曲线之间,并强制这两个段平滑连接,没有尖角。如果你在节点的一侧有直线段,第一个
将使其半平滑。 -
源路径上的尖角节点成为斯皮罗路径的角点。它们像弹簧杆上的自由铰链一样工作,允许它在任何角度弯曲。在两个角点之间,斯皮罗路径始终是直线。要使节点成为尖角,按
两下(第一次
只改变节点的类型,第二次实际上收回了手柄)。

图 13-24. 在 Spiro 路径中玩节点类型
注意
对于 Spiro 来说,重要的是节点手柄的实际共线性,而不管节点在节点工具中具有哪种节点类型。例如,如果一个被指定为尖点(菱形)的节点具有共线的手柄,它仍然会在 Spiro 路径上是一个平滑曲线点。
Spiro 样条线可能最大的问题是某些点配置不稳定,会产生狂野的环和螺旋而不是平滑曲线。尽管如此,合理的点序列通常工作良好;你只需避免点之间方向上的急剧变化,以防止这种不稳定性。希望算法的鲁棒性将在未来的版本中得到改进。

图 13-25. 具有五个节点的发散 Spiro 路径
当使用节点工具编辑 Spiro 路径时,源路径的红色高亮可能会分散注意力;您可以通过控制栏中的切换按钮将其关闭。
13.1.8 包络变形
此效果通过将路径或一组路径拟合到曲线包络中来扭曲路径。应用此效果后,包络是矩形的,你可以通过节点工具逐个弯曲其侧面。该效果将所有四边视为独立的辅助路径(“弯曲路径”),这稍微有些不便:你需要依次单击每个侧面的编辑按钮来弯曲所有四边。复制和粘贴按钮允许您将包络的确切形状从一个对象转移到另一个对象。

图 13-26. 一组路径的包络畸变
13.1.9 VonKoch
这种类似分形的递归效果将原始路径重复两次(作为子路径)进行平移、缩放和旋转;然后对这些副本执行相同的操作,依此类推,直到指定的代数。副本的变换由三个辅助路径的配置决定:一个参考段(最初,水平穿过源路径)和两个生成路径(最初,水平穿过前两代副本)。这些辅助路径是两个节点的直线段(即,它们的曲率不予考虑);要编辑它们,您可以使用节点工具并单击其控制栏上的编辑路径效果参数按钮一次或两次;或者,您可以单击效果参数中的编辑按钮,以编辑相应的辅助路径。以下是一些示例:

图 13-27. 相同源路径和不同辅助段的不同 VonKoch 分形
13.2 动态和链接偏移
我们已经看到了常规偏移命令(12.4 偏移),这些命令在每个点上垂直于路径方向扩展(外扩)或收缩(内缩)路径。这些命令是破坏性的——一旦偏移路径,您就会失去原始路径。然而,存在相同命令的非破坏性版本:动态偏移和链接偏移。
注意
动态偏移和链接偏移在概念上与路径效果非常相似——它们也有一个不可见的原始路径、可见的偏移路径以及指定偏移多少的参数。然而,由于历史原因,偏移并没有作为路径效果实现,因此它们在路径效果编辑器对话框中不可用。然而,似乎在未来的版本中,偏移将被重新实现为路径效果。
使用动态偏移时,原始路径在画布上的任何地方都不可见——它被存储在动态偏移对象内部,该对象仅显示偏移路径。要创建此类对象,请选择一个路径并按
或选择路径 ▸ 动态偏移。链接偏移的不同之处在于它链接到现有路径作为其源。通过这种方式,您可以从单个源路径创建多个偏移,并且当源路径被编辑时,它们都会更新。要创建链接偏移,请选择源路径并按
,选择路径 ▸ 链接偏移,或者简单地复制(
)现有相同原始的链接偏移。
这两种偏移都在偏移路径上显示一个单独的、菱形的手柄。您可以将其拖动到任何位置;它距离原始路径的距离决定了路径的内缩或外扩程度,但您也可以将其沿着路径移动到最方便的位置:

图 13-28. 使用手柄进行动态和链接偏移
与路径效果一样,要将动态或链接偏移转换为常规路径,请选择路径 ▸ 对象到路径 (
)。
13.3 路径扩展
扩展是简单的外部程序,它们在文档中选定的对象上执行一些操作。它们由扩展菜单子菜单中的命令表示。然而,它们不应与路径效果混淆;它们是一次性、破坏性的操作,在改变对象时不会保留原始对象。撤销扩展命令效果的唯一方法是使用编辑 ▸ 撤销。
典型的扩展在运行扩展之前,你可以在对话框中设置一些参数。大多数扩展对话框都有实时预览复选框,当勾选时,允许你在不撤销并再次调用扩展的情况下预览文档中各种参数的效果。请注意,当实时预览关闭时,扩展对话框不是模态的,这意味着你可以平移画布并选择不同的对象;一旦你打开实时预览,对话框就会锁定 Inkscape 的其余部分,这样你只能更改对话框中的参数并看到它们对当前选择的影响。(在更改参数和用实时预览更新画布之间通常会有一个暂停。)要应用更改作为最终结果,请点击应用按钮;要取消而不应用,请点击关闭。
并非所有扩展都处理路径;一些扩展在相关的地方已经提到,其他扩展将在整本书中介绍。在本章中,我们将仅关注修改或创建路径对象的扩展。
在从路径生成子菜单中,有几个扩展可以从选定的路径生成一些新的路径或路径:
内嵌/外延光环
-
向选定的路径添加指定数量的内嵌或外延路径,这些路径以给定的距离间隔排列,每个进一步的偏移都具有越来越低的透明度。如果你想要模糊对象的边缘但又不想使用高斯模糊滤镜(17.1 模糊):
![The Halo extension creates a “poor man’s Gaussian blur.”]()
图 13-29。光环扩展创建了一个“穷人版的高斯模糊”。
拉伸
-
通过将选定的路径在给定的角度拉伸到给定的距离来创建原始路径和其拉伸裙边的一组对象,从而创建一个原始的 3D 效果。效果的结果是一个包含两个对象的组,一个是原始路径,另一个是其拉伸裙边,你可以根据图 13-30 所示的不同方式来样式化。
![拉伸创建了一个简单的 3D 效果。]()
图 13-30。拉伸创建了一个简单的 3D 效果。
插值
-
在两个路径之间创建一个插值,或混合,这是一个中间路径的序列,这些路径在两个路径之间平滑过渡。你可以指定插值步骤数和指数,如果与默认值 0 不同,则将混合向一个端点移动:
![Interpolating paths]()
图 13-31。插值路径
插值样式选项虽然在测试中标记为“实验性”,但效果足够好。两种插值 方法 在生成中间步骤的方式上略有不同。扩展将所有中间步骤作为一个路径组生成;Duplicate endpaths 选项还将原始路径的副本添加到该组中。由于插值始终连接两条路径的开始和结束,您可能需要反转其中一条路径(路径 ▸ 反转),以获得您想要的结果。
沿路径图案
- 这与同名的路径效果(13.1.3 沿路径和弯曲的图案) 类似,实际上,这是此功能的第一个版本,在路径效果成为可能之前就已经引入。目前,与路径效果相比,该扩展有一个优点:它可以使用一组对象(每个对象都有自己的样式)作为图案,而在路径效果中,你被限制为使用单图案路径。要使用此扩展,请选择图案路径或组以及骨架路径(图案必须在 z 轴顺序上位于骨架之上),然后从菜单中选择扩展。其选项与相应的路径效果类似。
修改路径子菜单包含直接更改所选路径的扩展:
添加节点
- 此有用的扩展在路径中创建更多节点,而不改变其形状。您可以指定相邻节点之间的最大允许距离或每个段将被分割成多少段。我们已经在 图 9-11 中看到了此扩展的实际应用。
包络和透视
-
这两个扩展都需要您选择两条路径,第二条路径正好有四个节点。第二条路径被视为变形包络,第一条路径被嵌入其中(只有角落的坐标很重要;如果有的话,忽略侧面的曲率)。这两个扩展没有参数。两个扩展之间的唯一区别是,透视与包络不同,它将四个节点的包络解释为透视平面,执行透视缩短,使“更远”的部分变得更小:
![包络和透视]()
图 13-32. 包络和透视
Flatten Béziers 和 Straighten Segments
-
Flatten Béziers 扩展将所选路径中的每条贝塞尔曲线近似为一系列直线段(Flatness 越高,近似越粗糙),而 Straighten Segments 则简单地按给定百分比缩短所有贝塞尔手柄,因此将此设置为 100% 将每个贝塞尔曲线转换为直线段:
![将贝塞尔曲线展平和段直化]()
图 13-33. 将贝塞尔曲线展平和段直化
抖动节点
-
此扩展通过将所有节点随机方向和随机距离进行位移来随机化选定的路径,位移量受 最大位移 参数限制,这些参数可以分别设置 X 和 Y(例如,如果您只想在垂直方向上抖动节点,可以将 X 的最大位移设置为 0)。此外,您还可以分别启用节点本身及其贝塞尔手柄的抖动。开启 使用正态分布 以使较小的位移比大的位移更可能;如果不开启,则 最大位移 范围内的任何位移都是等可能的。
![抖动节点]()
图 13-34. 节点抖动
分形化
-
这是随机化路径的另一种方法。与 抖动节点 不同,它会在现有节点之间创建新的节点,然后移动这些新节点(原始路径中的任何贝塞尔手柄都将被丢弃),同时保留所有原始节点。细分 参数确定每个段将被细分多少次(注意:增加此值会使节点数量呈指数增长——例如,10 次细分将两个节点的路径变成一个包含 1,025 个节点的路径),而 平滑度 则改变新节点可以移动的距离(较低的 平滑度 产生更粗糙的路径)。此效果非常适合在幻想地图中创建海岸线:
![将路径分形化]()
图 13-35. 分形化路径
橡皮拉伸
-
此扩展在垂直方向上拉伸对象(在应用扩展前后旋转对象以获得不同的拉伸方向),同时在两侧水平吹气,使其以非线性方式表现,就像由橡皮制成:
![橡皮拉伸垂直拉动路径。]()
图 13-36. 橡皮拉伸垂直拉动路径。
漩涡
-
这会将选定的路径扭曲成一个漩涡,其中心位于启动扩展时 Inkscape 视图的中心。您可以通过按
或选择 视图 ▸ 缩放 ▸ 选择 (3.9 缩放工具) 来将视图中心放置在选择的几何中心。如果您在源路径中添加更多节点,此扩展将提供更好的结果,可以通过在节点工具中
或通过 添加节点 扩展:![漩涡路径]()
图 13-37. 漩涡路径
渲染子菜单包含一些扩展程序,它们可以生成完全基于您文档内容之外的新对象:
网格
-
此扩展程序以单一路径生成矩形网格,每行都是一个子路径(例如,图 13-36
、log(x)或sqrt(x)`;有关完整列表,请参阅函数选项卡。每次对函数的采样都会创建一个平滑的贝塞尔节点;该点处函数的一阶导数决定了该节点手柄的角度。您可以要求扩展程序数值计算一阶导数,或者您可以选择取消勾选该复选框,并使用与函数本身相同的 Python 语法和内置函数来提供导数函数(例如,
sin(x)的一阶导数是cos(x))。![函数绘图器示例]()
图 13-38. 函数绘图器示例
L 系统
-
此扩展程序实现了林德曼系统——一种具有递归的简单图形语言,可以生成复杂的顺序或树状结构:
![L 系统示例]()
图 13-39. L 系统示例
此语言中的“程序”,由像“向前走一步”或“向左转”这样的简单命令组成,包含两部分:公理和替换的规则。规则应用于公理,次数由顺序指定。其余参数确定公理和规则中原始命令产生的长度和角度,并允许您随机化这些值以使结果更自然。有关公理和规则中识别的命令的完整列表,请参阅帮助标签。
随机树
- 这与L 系统扩展类似,但更为原始;它所做的只是绘制一个随机分支的树,树的主干第一段长度为初始大小,每个后续分支逐渐变短,直到达到最小大小并终止绘图。因此,初始大小和最小大小之间的差异越大,树就越复杂。
曲线轮
- 这是同名流行玩具的实现,其中一个小圆在较大的圆形洞的边缘滚动。在扩展中,您可以改变这两个圆的直径以及一些其他参数。
最后,可视化路径子菜单收集了以某种方式可视化所选路径的扩展:
节点编号
- 这将路径替换为一组点,每个点对应于原始路径的节点,按顺序编号。您可以更改点的尺寸和表示数字的文本对象的字体大小。
绘制手柄
- 此扩展添加与所选路径的贝塞尔手柄相对应的行,作为一个具有单独子路径的新路径。
尺寸
- 这在所选对象(不一定是路径)周围创建一个框架和尺寸线,例如在平面图或技术草图中使用的那些。创建尺寸线后,您可以使用测量路径扩展添加实际长度测量值。
测量路径
-
此扩展计算路径的长度,从起点到终点,并将此值作为文本路径对象添加到源路径上(15.7 将文本转换为路径)。您可以指定值的精度和长度单位,并调整字体大小和路径的距离(偏移量)。
![尺寸和测量路径的综合效果]()
图 13-40. 尺寸和测量路径的综合效果
第十四章. 绘图
从历史上看,矢量编辑器的一个名称是矢量绘图——或者甚至简单地称为绘图——应用程序。另一方面,位图编辑器有时被称为绘画程序。在传统媒体(如纸张和画布)中确立的绘画与绘画之间的区别因此延续到了数字领域。尽管矢量程序现在被用于——也许甚至更倾向于用于更高级的任务,如构图和布局——“简单地绘图”仍然是这类工具最基本的应用。
确实,矢量绘图永远无法像位图那样自然和“绘画般”;即使是最好的矢量艺术也带有那种可识别的平滑、计算机生成的外观。然而,这种外观往往并不是问题;它甚至可能是一个优势。此外,矢量编辑器拥有位图编辑器无法比拟的某些功能:将每笔划视为一个独立的对象,这些对象永远不会合并或“扁平化”到其他对象中(除非你告诉它这样做)。事实证明,这种无限的调整能力有时对于制作好的自由手绘比模仿蜡笔笔触或湿画水彩的能力更重要。
Inkscape 提供了三种主要的绘图工具供您选择,具体取决于您想要创建的艺术类型。如果您需要严格几何或贝塞尔形状的路径,节点放置精确,请使用钢笔工具(14.1 钢笔工具)。对于自由手绘路径,经过一定程度的平滑处理,请使用铅笔工具(14.2 铅笔工具)。最后,对于复杂、自然、压力敏感的填充笔触,模仿各种物理效果,如颤抖或惯性,请使用书法笔(14.3 书法笔工具)。我们还将讨论油漆桶工具(14.4 油漆桶工具),用于填充封闭区域,通常用于卡通和自由手绘。

图 14-1. Inkscape 的绘图工具
14.1 钢笔工具
钢笔工具适用于那些你知道大致想要放置路径节点位置的情况。它可以被视为节点工具(12.5 节点工具)的兄弟,但它优化了创建和连接节点而不是编辑节点的功能。
切换到笔工具(
或
),在画布上点击并拖动。新路径的第一个节点出现在你点击的位置;从该点到你的当前鼠标位置的灰色直线是该节点的手柄(12.1.4 贝塞尔曲线)。一旦你释放鼠标按钮,手柄就固定了——但路径尚未完成;现在它期望你点击或点击并拖动以创建第二个节点。在此模式下,只需移动鼠标(不点击)就会显示一个红色的贝塞尔段,这显示了如果你在此点创建下一个节点,路径将如何看起来。

图 14-2. 笔:第一个节点集,准备进行第二个节点设置
现在,点击并拖动以设置第二个节点(图 14-3)。释放鼠标后,两个定义节点之间的路径部分变为绿色,并且你再次在最后一个创建的节点和当前鼠标点之间有一个红色段。这可以无限重复——只需继续点击并拖动(用于平滑对称节点)或仅点击(用于尖点节点);在每一步,你已创建的路径部分是绿色的,你即将创建的部分是红色的。

图 14-3. 笔:两个节点设置,准备进行第三个节点设置
要完成路径,请双击或右键单击(这添加一个节点并完成路径)或按
(这取消红色段而不添加更多节点并完成路径)。只有在这一点上,整个路径才实际上作为一个对象创建;你之前看到的是只是一个虚拟的支架。完成路径的另一种方法是闭合它;如果你在路径的第一个节点(由一个小方形锚点标记)正上方创建下一个节点,路径将被闭合并最终完成。
要在任何时候取消创建路径,请按
或简单地切换到另一个工具。
注意
大多数用于缩放、滚动和滚动的键和鼠标快捷键(第三章)在笔工具中工作,而不会干扰路径创建。例如,你可以中间拖动画布并中间单击以放大,以便更好地定位你的下一个节点。
14.1.1 节点类型
正如你所看到的,点击并拖动创建了一个具有两个对称手柄的平滑节点(除非这是路径的第一个节点,它只有一个手柄)。简单的点击创建了一个没有手柄的尖点节点。你还可以使用非共线手柄创建尖点节点;为此,点击并拖动,但在拖动时按
。这固定了相反的手柄,并允许你独立移动近端手柄:

图 14-4. 使用笔工具创建尖点节点
你也可以在拖动手柄时按
来将其吸附到 15 度的增量(比较6.3 选择器:旋转和倾斜;你可以在Inkscape 首选项中选择另一个吸附值)。在创建节点时在鼠标之间移动并按
,类似地,可以将方向吸附到最后一个创建的节点和鼠标点之间;这是一种创建严格水平或垂直线的简单方法:

图 14-5. 笔:使用
吸附
14.1.2 返回
你可以在路径创建过程中随时回退;要取消最后添加的绿色段,请按
。你可以重复按
来移除多个段;移除最后一个剩余的节点将取消整个路径。
并非总是容易在一次尝试中就精确地点击你想节点出现的位置。Inkscape 允许你在不最终确定路径的情况下移动最后一个创建的节点(即,绿色段的末端);只需使用与其他工具相同的方便修饰符使用箭头键:
来移动,
来移动(6.5.1 移动)。
14.1.3 继续路径
使用笔工具,任何选定的路径都会显示其端节点,如果有的话(即,是开放的),称为锚点。(这适用于你刚刚使用此工具创建的任何路径——在最终确定后,它仍然被选中。)这些锚点允许你继续向选定的路径添加(通过在锚点处放置第一个节点)或关闭它(通过从一个锚点到另一个锚点绘制)。
您还可以向选定的路径添加新的子路径(12.1.1 子路径)。为此,只需在点击以创建第一个节点时按住
同时 点击。之后,像往常一样创建并完成路径;您的路径将作为子路径添加到选定的路径中。所有打开的子路径都显示锚点,这意味着您可以关闭它们或将它们连接在一起:

图 14-6. 钢笔:添加或关闭子路径
14.1.4 模式
现在,让我们看看钢笔工具的控制栏(在画布上方)。注意四个模式按钮:

图 14-7. 钢笔工具模式
这些按钮控制 Inkscape 创建路径的类型。到目前为止,我们一直在第一种(默认)模式下工作,该模式使用直线和贝塞尔曲线创建常规路径。
第二种模式创建斯皮罗路径(13.1.7 斯皮罗样条),即应用了斯皮罗样条路径效果的路径。在斯皮罗路径中,节点的手柄的确切位置并不重要;唯一重要的是节点是否平滑(具有共线手柄)或尖点(没有手柄或具有非共线手柄)。因此,在这种模式下,您拖动创建的节点手柄的位置或距离都没有关系;唯一重要的是您是否拖动它(这创建了一个平滑的斯皮罗节点)或只是点击(这创建了一个尖点的斯皮罗节点)。
注意
不幸的是,在斯皮罗模式下,您在创建路径时看到的绿色和红色段并不对应最终路径的外观——它们显示给您的是没有应用斯皮罗样条效果的路径。
其他两种模式是常规模式的限制。直线模式禁用创建平滑节点(即,确保即使是拖动也像点击一样工作,创建一个没有手柄的尖点节点)。准直模式进一步限制段为水平和垂直,确保每个段与前一个段垂直。
此外,在直线和准直模式下,
-点击创建一个单个点(一个小圆圈),而不是开始一个路径。这对于创建几何和技术绘图很方便。
-点击点的尺寸可以在钢笔工具的首选项中设置为笔触宽度的单位(在工具箱中双击工具图标以访问Inkscape 首选项对话框中的选项卡)。如果您使用
,点的大小是两倍。

图 14-8. 钢笔:螺旋线、直线、抛物线线和单点
14.1.5 笔画形状
钢笔工具控制栏上的形状下拉菜单允许您为创建的路径选择笔画形状。
SVG 本身不支持形状笔画;在 SVG 中,笔画始终是恒定宽度的条带(第九章)。选择任何其他形状选项时,工具将应用路径沿路径效果到您的路径(13.1.3 路径沿路径和弯曲**),以便通过路径的填充来模仿形状笔画。因此,当使用这些选项时,路径内部不能有任何其他填充,并且工具会自动将笔画样式应用于填充,并丢弃原始笔画样式,以便结果看起来符合预期(参见图 14-9)。

图 14-9. 使用钢笔工具的形状笔画
可用的笔画形状包括椭圆、两个三角形(Triangle in表示路径的宽度从开始到结束减小,Triangle out表示路径的宽度从开始到结束增加),以及如果您选择从剪贴板选项,任何您放置在剪贴板上的其他形状。
要调整形状笔画的宽度,请打开路径效果编辑器对话框(13.1.2 路径效果编辑器对话框)并使用路径沿路径效果的宽度控件。此参数可以设置为形状自然宽度的倍数(对于所有三种标准形状,这是 10 像素)或路径长度的倍数。
在节点工具中,通常可编辑的是原始骨架路径,而不是应用到的形状,但您也可以使用编辑路径效果参数按钮来编辑应用的形状(图 13-5)。
路径形状与钢笔工具的任何模式都兼容,包括斯皮罗模式。例如,您可以使用椭圆形状绘制斯皮罗路径,然后切换到节点工具并调整斯皮罗节点——整个椭圆形状将弯曲和卷曲,就像斯皮罗一样。在这个路径的路径效果编辑器对话框中,您将找到堆叠在一起的斯皮罗样条和沿路径图案效果。
要将应用了形状和/或斯皮罗样条的路径转换为常规路径,请使用对象到路径命令(
)。
14.1.6 样式
与所有创建对象的工具一样,钢笔和画笔工具可以使用最后设置的样式或它们自己的工具样式(11.1.2 新形状的样式)。默认情况下,它们使用自己的样式,最初设置为无填充,1 像素黑色描边。这是因为大多数情况下,最后设置的样式有填充但没有描边,而使用这些工具绘制时,您可能期望结果有描边但不一定有填充。有关如何更改工具样式的信息,请参阅图 11-2。通常,将在控制栏的右端显示将用于创建下一个路径的样式(图 11-1)。
注意
*当使用形状而非无时,Inkscape 会执行您预期的操作:将工具样式的描边属性应用到填充上。因此,如果无创建一个没有填充的黑色描边,三角形内将创建一个有黑色填充但没有描边的形状描边(图 14-9)。然而,如果没有设置描边,它将使用填充属性,如果有,用于形状路径。
14.2 画笔工具
画笔工具(
或
)与钢笔工具非常相似,并且共享大多数相同的控件。它的主要区别在于,使用画笔时,您不必担心节点或手柄;您只需绘制一条自由手绘线条,Inkscape 就会使用路径来近似它。
画笔工具控制栏中最重要的设置是平滑度,它指定了从 1 到 100 的范围,以确定这种近似有多精确。平滑度值较小时,Inkscape 会尝试精确追踪鼠标的每一个微小移动;生成的路径将相当不均匀,包含许多节点。相反,较大的平滑度会产生具有少量节点的通用、近似路径——在 100 的最大值时,大多数鼠标拖动将在两个节点之间创建仅一个贝塞尔段:

图 14-10. 不同平滑级别的铅笔线条
注意
平滑控件仅影响铅笔工具中新建的路径。如果你想要改变现有路径的均匀性和节点数量,你只能通过使用路径* ▸ 简化命令(12.3 简化)来使路径更加宽松。*
与钢笔工具类似,在铅笔工具中,任何选定的路径都会在其所有子路径的开放端节点上显示锚点。你可以通过从一个锚点到另一个锚点绘制来继续、闭合和连接子路径,并且你可以通过按住
开始绘制来向选定的形状添加新的子路径。
类似于钢笔工具,铅笔工具也有一个模式开关,但它只有两个选项:常规路径和斯皮罗路径。形状菜单与钢笔工具的菜单完全类似,允许你绘制手绘形状的线条。以下是一些使用斯皮罗和/或线条形状创建的铅笔路径示例:

图 14-11. 使用铅笔工具的形状线条
使用
绘图可以启用铅笔工具的“草图模式”。在这个模式下,当你按住
进行拖动时,任何数量的拖动都会被平均;实际的路径只有在释放
后才会创建。这允许你在绘图时“感觉”路径,并提炼出最佳的轮廓,而不会留下大量试探性的线条。在铅笔工具的Inkscape 首选项页面,平均所有草图设置(默认开启)会以相等的权重平均你在按住
时制作的所有草图;如果你将其关闭,它将在最新的一笔和之前的平均值之间进行平均,从而给予最新的一笔更多的权重。
14.3 书法笔工具
“Inkscape”这个名字非常贴切:程序中最复杂的绘图工具,即书法笔,确实感觉非常像墨水。这个工具,正如其名所示,最初是为了书法——即精美的手工书写。但随着时间的推移,它变得足够灵活,可以用于一般的艺术草图、绘图和上墨。
切换到书法笔(
或
)并在画布上拖动。您会看到在绘制时创建的填充路径,其宽度和形状取决于笔触的角度、拖动速度和笔的压力(如果您使用的是平板电脑)。结果是类似于铅笔工具的笔触形状(图 14-11),但书法笔触看起来更加自然。此工具的结果始终是普通、填充的路径,没有任何路径效果。
14.3.1 宽度
让我们看看我们如何改变书法笔的输出。工具控制栏上最重要的设置是宽度,指定笔触的宽度(或者更准确地说,是其最大宽度;许多其他因素也可能影响宽度,但它永远不会超过您在此设置的值)。此宽度值可以在使用书法笔工具时通过
和
键随时进行调整。

图 14-12. 宽度变化(压力感应关闭)
默认情况下,宽度是以相对单位从 1 到 100 测量的。这意味着这个宽度值是相对于您的文档窗口的大小,而不是文档中的任何对象或测量。换句话说,如果您缩小视图,您的笔触在绝对单位上会更宽,但您看起来会完全相同。值 1 总是给出细线,值 100 总是给出大约 2 厘米宽的笔触,这是在您的屏幕上测量的。
这使得您无论当前缩放级别如何,都能始终感受到工具的相同感觉,并提供了直观的工作流程:首先,在缩小视图时,勾勒出大致轮廓;然后,放大视图以添加越来越精细的修补——所有这些都不需要来回调整宽度。如果您不喜欢这种方法,请转到工具的Inkscape 首选项(与任何工具一样,您可以通过在工具栏上双击工具图标来访问它)并勾选绝对单位中的宽度复选框;现在,宽度控制将设置笔触的绝对宽度,以px为单位。
14.3.1.1 压力感应
如果您使用的是压力感应平板作为输入设备,Inkscape 允许您使用压力信息来改变笔触的宽度——轻轻按下以获得细线,用力按下以获得更宽的画笔:

图 14-13. 带有或没有压力感应的绘图在同一宽度下
要启用压力感应,请点击宽度控制右侧的切换按钮。没有压力感应时,工具会像应用最大压力一样绘制。
注意
在使用压力感应之前,您可能需要将您的平板电脑配置为输入设备。通常,您只需从文件菜单中选择输入设备,然后为每个可用的设备选择屏幕模式。此对话框中的其余控件可以保留在默认状态。
14.3.1.2 跟踪背景
另一个可能影响书法笔触宽度(如果您启用了此功能)的因素是您绘制在其上的背景对象的颜色深度。也就是说,当您在白色上绘制时,您的画笔最细;当您在黑色上绘制时,您的画笔最宽。这在您使用引导跟踪(14.3.7 跟踪引导路径)在背景绘制或位图中创建交叉线并希望使用宽度平滑变化的笔触达到阴影效果时最有用:

图 14-14. 通过宽度跟踪背景
要启用跟踪背景,请点击宽度控制右侧的第二个切换按钮。此设置可以与压力感应结合使用,尽管在跟踪时通常更合理地关闭压力感应。
14.3.1.3 通过速度变细
最后,您的绘图速度——您拖动鼠标或笔的速度——也可能影响笔触的宽度。这由变细值控制,该值从-100 到 100(图 14-15")). 正值会使您在加快速度时笔触变宽;负值会使笔触变细。如果您将此参数设置为 0,则禁用通过速度变细。

图 14-15. 通过速度变细(压力感应已关闭)
由于拖动过程中的笔触通常速度较快,因此结果是两端宽度固定,中间“呼吸”的形状,此参数的正值会使中间变细。压力感应通常具有相反的效果,因为笔触中间的压力通常高于两端。这两个因素的相互作用使得笔触感觉非常自然。
在实际应用中,当您快速移动真实的毛笔或铅笔时,通常会留下较细的痕迹;此参数的默认值设置为 10 以模拟此行为。然而,您也可以将其推至-100 或 100,这将产生非常奇特的“爆炸”或“收缩”画笔效果,这与现实世界中的任何事物都大不相同!
14.3.2 角度
角度和固定参数按照其名称对待书法笔——也就是说,作为一个可以以不同角度持握的平头书法笔。角度设置笔尖的角度为水平:0 表示笔尖水平,+90 表示笔尖逆时针旋转到垂直,-90 表示笔尖顺时针旋转。这个值也可以通过按
(增加)或
(减少)箭头键来改变。

图 14-16. 笔画的倾斜角度和固定
使用非零固定值设置角度对于产生书法字母最有用。对于大多数书法风格,角度应该在 30 到 60 度之间。
注意
如果你的平板支持笔尖角度检测,你可以通过额外的真实感,将工具的角度参数绑定到笔的实际物理角度。为此,只需按角度滑块旁边的切换按钮即可。
固定(范围在 0 到 100 之间)控制了这个角度被强制执行的严格程度。当固定值达到最大时,笔尖总是以设定的角度旋转,无论你以什么方向绘制,因此平行于笔尖角度的绘制总是给出细线笔触,而垂直于它的绘制则产生最大宽度。当固定值为零时,笔的方向始终垂直于运动方向,这使得角度变得无关紧要,并给你类似圆珠笔或圆刷的效果。固定值的中间值会产生受角度和运动方向影响的笔触,比例各不相同。
14.3.3 笔帽
默认情况下,书法笔触在两端被截断。这对于书法作品来说是合适的,但在其他时候你可能想要更圆润的外观。将笔帽参数增加到大约 0.5 以在两端产生轻微的膨胀,增加到 1.3 以获得大约圆形的笔帽,或者增加到 5 以获得长而突出的笔帽:

图 14-17. 书法笔触的笔帽
14.3.4 颤动、摆动和质量
我们到目前为止所看到的书法笔工具很有用,即使可能有点无聊。现在该添加一些乐趣了!最后三个参数——颤动、摆动和质量(所有参数的范围都是 0 到 100)——以一些非常规的方式修改了工具的行为。
即使使用具有压力感应的绘图板,书法笔的笔触也常常看起来过于平滑和计算机化。增加颤动会给笔触添加小规模的干扰,使其看起来更自然——粗糙、颤抖,甚至斑驳。颤动的频率是时间性的,而不是空间性的,这意味着如果你画得更快,粗糙度会沿着笔触拉伸,因此看起来更平滑。
Wiggle 参数也会干扰笔触,但范围更大,使其在波浪形或环状图案中摇摆,有时会偏离光标实际位置很远,尤其是在尖锐转弯处:

图 14-18. 颤动(左)和摇摆(右)的效果
Mass 使笔触落后于光标,就像被惯性拖慢一样,导致尖锐角落的平滑和笔快速移动的缩短。颤动和摇摆的默认设置是 0,但质量有一个小的非零默认值(0.02),这样书法笔感觉轻盈且响应迅速,但并非完全无重量。
14.3.5 书法预设
书法笔是 Inkscape 中最设置丰富的工具——有时,它可能会让人感到不知所措。即使你记住了所有的控制方式,每次从平滑的记号笔切换到摇摆的刷子时,调整几个滑块和按钮也是耗时的工作。预设是解决这个问题的一个方法:通过在工具栏左侧的下拉菜单中选择一个预设,你可以一次性设置多个参数。程序中包含几个预设:
-
Dip pen 是一种模仿软书法笔的笔:平滑(无颤动或摇摆),压力感应,角度固定在 30 度,无帽圆滑。
-
Marker 是一种普通、恒定宽度的毡尖笔:平滑,无压力感应,无速度细纹,无角度固定,圆帽。
-
Brush 与 Marker 相比,增加了压力感应、负细纹(即,当你移动得更快时,笔触会更宽)和一些摇摆。
-
Wiggly,正如其名所示,具有高摇摆和一定程度的颤动,以产生特有的“脏污”外观。
-
Splotchy 是一种非常宽的刷子,具有高颤动和高负细纹,可以产生一系列由细条纹连接的“斑驳”效果(参见图 14-15,右)。
-
Tracing 与 Marker 类似,但开启了背景追踪功能(14.3.1.2 跟踪背景)。
注意
不幸的是,截至版本 0.47,无法通过 GUI 添加更多预设到列表中——但如果你真的需要,你可以通过编辑你的 preferences.xml 文件(3.1.1 Inkscape 预设)来添加它们。在具有 id="preset"的 group元素中,添加如下内容:
<group name="My style" width="50" mass="0" wiggle="25" angle="30"
thinning="-40" tremor="10" flatness="50" cap_rounding="1"
tracebackground="1" usepressure="1"/>
14.3.6 添加和减去
如果在开始绘制之前选择了单一路径,并且在释放鼠标按钮或抬起笔时按下了
,您创建的新对象将自动通过联合路径操作(12.2 布尔运算)被添加到所选路径中,形成一个新单一路径。
类似地,如果您按下
,新对象将通过差集操作从所选路径中减去。(如果想要使用此功能作为单独的工具而不需要按住
,橡皮擦工具的裁剪模式工作方式相同。)这使得快速“修补”或“雕刻”任何路径变得容易。
14.3.7 跟踪引导路径
按下
使用书法笔绘制会激活引导跟踪功能,这会使您的笔在离所选“引导”路径边缘的某个恒定距离处“滑动”,并让您沿着该引导路径绘制。
这个功能的灵感来源于传统的线条雕刻技术,这些技术在很长时间内是复制黑白印刷中逼真图像的唯一实用方法;大约一个世纪前,线条雕刻几乎完全被自动半色调网屏所取代。交叉线——用许多平行的直线或各种曲线的线条填充空间,以表示渐变的阴影——是一个非常费力的过程。Inkscape 的引导跟踪,以及背景追踪(14.3.1.2 跟踪背景)和调整工具(12.6 路径调整),从这种古老艺术中消除了痛苦和无聊。虽然您仍然需要敏锐的眼睛和勤奋,但使用 Inkscape 至少可以在合理的时间内创建看起来真实的线条雕刻,完全使用矢量图形。
一种近似填充网格的方法是通过使用路径插值(混合,17.2 混合模式),但这种方法不够灵活,并且在没有“人文触感”的情况下会产生过于明显的计算机生成输出。另一方面,手动绘制填充线既繁琐又几乎不可能均匀完成。然而,引导跟踪功能允许你快速且均匀地填充,同时让你在过程中有足够的手动控制。
下面是操作方法。首先,选择你将要跟踪的引导路径。它可能是一条其他的书法笔触,任何路径或形状,甚至是一个文本对象的字母。然后切换到书法笔工具(如果你还没有切换的话),在开始绘制之前,按下
。你将看到一个以鼠标指针为中心、接触所选引导路径最近点的灰色轨迹圆。(如果你没有选择引导路径,状态栏消息会告诉你去选择它。)
现在将你的鼠标移近引导路径,使得轨迹圆的半径等于你想要的填充图案的间距,并开始沿着引导路径绘制。一旦开始绘制,圆的半径就会锁定,圆变成绿色;现在圆沿着引导路径滑动——实际的笔触是由跟踪圆的中心绘制的,而不是你的鼠标点。因此,你得到的是一条平滑的笔触,始终与引导路径保持相同的距离。

图 14-19. 跟踪引导路径
当笔触准备好后,释放你的鼠标按钮(或抬起你的平板电脑笔)。然而,不要放开
,因为只要按下它,工具就会记住你开始绘制时设置的填充间距。由于你刚刚创建了一个新的笔触,所以这个笔触对象被选中,而不是之前选中的对象——这意味着它现在变成了新的引导路径。接下来,沿着第一个笔触绘制第二个笔触,然后沿着第二个笔触绘制第三个,依此类推。最终,你可以填充任何想要的区域,得到漂亮的均匀填充,如图图 14-20 所示。
与引导路径的附着并不是绝对的。如果你将鼠标指针从引导路径上移开足够远,你将能够将其撕掉(轨道圆圈将从绿色变为红色)并移动开(但并不完全自由:笔将具有来自引导追踪的重惯性)。这是故意的;例如,这样你可以继续绘制超过引导路径末端的笔触,以便覆盖比初始引导路径允许的更宽的区域。由于惯性,这种撕掉通常相当平滑,但无法完全抑制抖动。如果你仍然对抖动和意外的撕掉感到烦恼,请尝试增加质量参数。

图 14-20. 创建均匀的阴影线
注意
由于追踪功能是为平滑的雕刻图案设计的,因此它不适用于带有过于尖锐的转弯或过于不均匀的引导轨道(例如,带有高震颤的书法笔触)。
跟踪引导还可以通过根据你的绘图行为逐渐改变跟踪距离来提供一些反馈。如果你一直在尝试比当前跟踪距离更近或更远地绘制引导,距离会稍微减小或增加,这样你将得到稍微更近或更宽的间距的阴影线。此外,请注意,由于跟踪遵循笔触的边缘,宽度变化的笔触(如追踪背景的笔触,见下文)将导致随着你继续进行,阴影线图案逐渐弯曲。
如果你意外地取消选择了你最后创建的笔触(例如,通过执行一个糟糕的笔触的撤销操作),你可以通过按
(5.11 使用键盘快捷键选择)而不离开书法笔工具来重新选择它。引导追踪可以与添加或减去(即,你可以按
将新笔触添加到选定的引导路径或按
从中减去)相结合。
将引导追踪与调整工具结合使用在书法笔工具中是很自然的。阴影线很少能完美呈现;松散的偏离末端、错误的倾斜或曲率以及不正确的笔触宽度(即,太深或太浅的阴影线)是最常见的问题。调整工具可以修复所有这些问题,这样你就不必重新绘制阴影线。使用缩小/放大模式清除松散的末端,就像使用橡皮擦一样,并调整笔触宽度,使用推拉模式弯曲或塑造阴影线。有了这些强大的工具,通过追踪位图原始图像,可以创建复杂且逼真的阴影线:

图 14-21. 使用位图(顶部),用书法笔工具在其上绘制阴影,然后用调整工具(底部)调整生成的阴影。
14.4 油漆桶工具
“油漆桶”或“洪水填充”工具的概念可能你从位图编辑器中很熟悉。在 Inkscape 中,油漆桶工具的工作方式与你预期的一样:在任意一个四周被限定区域点击,它就会用颜色填充该区域。然而,作为一个矢量工具,Inkscape 的油漆桶只是创建一个新的路径,该路径“填充”了你点击的区域:

图 14-22. 油漆桶填充限定区域
重要的是要记住,油漆桶工具是感知的,而不是几何的。也就是说,当寻找你点击的点周围的边界时,它会将任何可见的颜色不均匀性识别为边界。因此,填充会在位图对象中的渐变、模糊和颜色边界处停止,但它会忽略任何完全(或几乎)透明或因其他原因与背景不突出的路径或其他对象。
例如,你可以扫描铅笔草图,将位图导入 Inkscape,并通过用颜色填充所有单元格来快速“追踪”它。这是一种非常方便和交互式的方式,可以将你的纸张绘图数字化,并且在许多情况下使传统的位图追踪(追踪位图对话框,18.8.2 追踪位图对话框)变得不再必要。
注意
内部,该工具通过在可见画布的屏幕分辨率版本上执行基于位图的洪水填充,然后将生成的填充追踪到矢量路径中来实现。用于执行追踪的渲染分辨率由你当前的缩放定义;你缩放得越近,洪水填充的分辨率就越高。所以,如果油漆桶填充的结果不够精确,有圆角,或者没有进入它应该进入的小角落和缝隙——只需撤销,放大更近(但要确保整个要填充的区域仍然可见),然后从相同的位置重新填充。相反,如果填充从一个小缝隙中泄漏出来,缩小以使缝隙不那么明显,然后再次填充(或使用自动缝隙闭合参数,14.4.5 关闭缝隙)。
14.4.1 填充技术
填充有界区域与切换到油漆桶工具(
或
)并在区域内点击一样简单。如果您使用
点击,结果路径将与所选路径合并(12.2 布尔运算);这样,如果您的第一次尝试没有填充所有所需区域,只需
-点击剩余的角落来完成它,如图图 14-23 所示。
如果您点击并拖动,您将填充您在拖动过程中经过的所有点(您将通过红色线可视化您的路径)。从每个点开始,填充会扩散到颜色与该点相似的所有相邻点——换句话说,就像在每个拖动路径的点处使用此工具点击并将结果组合起来。这允许您轻松填充由渐变或模糊占据的区域——只需从您想要填充的区域中最暗的点拖动到最亮的点:

图 14-23. 向现有路径添加油漆桶填充

图 14-24. 点击一次,只填充渐变的一小部分;拖动覆盖区域以填充整个渐变。

图 15-1. 通过点击放置文本编辑光标
在 Inkscape 中输入和编辑文本的方式与任何文字处理应用程序相同。按
开始新行,并使用
或
删除字符,包括换行符。可以使用箭头键移动文本光标(使用
按单词跳转),使用
和
键(使用
移动到文本对象的开始或结束),以及
和
键。如果需要,画布会自动滚动,以确保文本光标始终可见。
注意
如果出于某种原因,在画布上编辑文本不方便,你可以打开文本和字体对话框(15.4.2 字体和变体),然后在文本选项卡中,在一个标准文本区域中编辑所选的文本对象。不幸的是,点击应用会丢失你可能已经应用到文本内跨度上的格式(15.4.1 非文本样式属性);然而,如果你只是打开窗口来阅读文本或将其复制到剪贴板而不做任何更改,这是完全安全的。
15.1.1 选择
你可以通过拖动覆盖一些字符(就像点击一样,你必须从一个字符体开始,而不是空白空间)或使用
-箭头键移动文本编辑光标来在文本对象内选择。这种文本选择,通过一个绿色蓝色的矩形覆盖来可视化,不要与程序范围内的对象选择(第五章,而不是选择所有对象,会选择此文本对象内的所有文本。

图 15-2. 使用文本工具进行文本选择
使用
(或使用
剪切)复制文本选择,并在光标位置使用
粘贴,这是一种移动文本片段的简单方法——无论是同一文本对象内、同一文档中的文本对象之间、跨文档,甚至是 Inkscape 与其他应用程序之间。例如,你可以在文字处理程序中复制一段文本并将其插入到 Inkscape 的文本对象中。复制/粘贴不会传输格式,只有文本内容。
15.2 文本对象类型
你如何创建一个新的文本对象?这取决于你想要创建哪种类型的文本,我们将在接下来的章节中讨论。
15.2.1 正常文本
要创建一个常规文本对象,切换到文本工具(
),点击画布(不是现有文本对象!)以放置文本光标,并开始输入。(如果你拖动而不是点击,你将创建一个流动文本对象,它将在几个重要方面有所不同,我们将在稍后看到。)
一旦你输入了至少一个字符,新的文本对象就会被添加到文档中。在那个时刻,你可以切换到任何其他工具来处理新创建的对象(只要它保持选中状态),就像处理任何其他对象一样——例如,使用选择工具变换它,通过点击调色板颜色来绘制它(这可以在任何工具中完成),或者使用渐变工具在其上绘制渐变。

图 15-3. 文本和选择工具中文本对象的状态栏描述
在常规文本中,没有自动换行;你需要按
键进入下一行。如果你不这样做,而只是继续在同一行中输入,它可以达到任何长度。
SVG
文本对象是 SVG 的标准 text 元素类型。多行对象中的每一行都是一个带有 sodipodi:role="line" 属性和显式 x 和 y 属性的 span *元素,Inkscape 会根据根文本对象的坐标和行间距自动计算这些属性(15.3.4 字符间距和行间距)。
15.2.2 流式文本
流式文本与常规文本的不同之处在于它有自己的固有宽度(或更普遍地,框架),并且它会自动换行以填充这个宽度(或框架)。换句话说,在流式文本中输入时,你不需要按
键进入下一行(但你可以按它来开始新段落)。
15.2.2.1 内部框架
创建流式文本最简单的方法是使用文本工具在画布上拖动,而不是点击。这会创建一个矩形框架,就像使用矩形工具拖动创建矩形一样。释放鼠标后,你可以输入或粘贴文本,文本会在达到框架边缘时自动换行。你还可以拖动右下角的把手来调整框架大小,并看到文本会自动重新排版以适应新的宽度。

图 15-4. 带有内部框架的流式文本
文本在单词边界处换行;不支持自动连字符。如果文本多于框架能容纳的量,超出部分的文本(从单词边界开始)将被隐藏(但它仍然存在;如果你在开头删除一些文本,末尾会移动进来并变得可见)。这种具有内部框架的流式文本被称为具有内部框架,因为它的矩形框架是对象本身的一部分,而不是一个单独的对象;例如,当你变换文本时,文本及其框架作为一个整体被变换。
注意
流式文本对象的边界框(4.2 边界框)仅覆盖文本本身的可见字符,而不管其框架的大小如何。
15.2.2.2 外部框架
流式文本的另一种变体是,它不是使用自己的内部矩形框架,而是可以链接到任何外部路径来塑造其文本。要创建此类对象,选择两个对象——任何文本(常规或流式)和路径——然后选择文本 ▸ 流进框架:

图 15-5. 具有外部框架的流式文本
此命令不会移除或隐藏框架对象;文本和框架仍然是独立的对象,文本被称为链接到其框架,就像克隆体与其原始对象一样(第十六章). 编辑框架对象的形状会迫使链接的流式文本重新排版到更改后的形状,但调整框架的样式(例如,通过使其完全透明来隐藏)不会影响文本。
您可以单独移动或变换链接的流式文本,但移动或变换框架也会影响文本(比较根据变换移动克隆补偿模式,16.2 变换克隆体)。选择链接的流式文本并按
将选择其框架,就像选择克隆体及其原始对象一样(16.4 链接克隆体)。
15.2.2.3 SVG 兼容性
流式文本最大的问题是它不是一个标准的 SVG 功能,而是 Inkscape 的扩展,由于历史原因,其实现方式与其他 SVG 查看器不兼容。因此,如果您的文件可能在除 Inkscape 以外的程序中查看,则文件中不得包含任何流式文本。
如何去除流式文本?一种方法是在文本菜单中使用取消流式化命令,该命令删除流式文本的内部框架(或与其外部框架断开连接)并将其转换为单行常规文本,然后您可以手动重新包装。
通常,使用转换为文本命令(文本 ▸ 转换为文本)会更加方便,这个命令还能将流式文本转换为常规文本,但会完全保留其多行外观,仅移除自动换行功能。当然,您也可以使用路径 ▸ 对象转换为路径命令(15.7 将文本转换为路径)来获取一组路径;您将无法再编辑文本,但它会保留外观。

图 15-6. 去除流式文本的三种方法
15.2.3 路径上的文本
Inkscape 中的单行文本对象可以链接到路径,将路径用作文本基线的引导,而不是作为框架。只需选择文本和路径,然后选择文本 ▸ 放置于路径:

图 15-7. 将文本放置在路径上
此连接是动态的:文本和路径都保持完全可编辑,修改路径会相应地弯曲文本。如果文本比路径长,其末端会被隐藏(但它仍然存在;如果你在开头删除一些文本,末端会移动并变得可见)。如果路径由多个子路径组成(12.1.1 子路径),文本将在字符边界处从一条子路径继续到下一条子路径(但不是单词边界)。
路径是否有描边或填充无关紧要;对文本来说,唯一重要的是其几何形状。路径方向也很重要;如果您想在路径的另一侧放置文本并反向排列,只需在路径上选择路径 ▸ 反转:

图 15-8. 路径方向影响路径上的文本。
您可以通过使其完全透明或移除其填充和描边来轻松隐藏引导路径。此外,与流文本一样,您可以移动文本对象远离其路径或对其进行变换,而不会断开链接,而变换路径会相应地移动或调整文本。
可以将多个文本对象链接到同一路径。使用文本 ▸ 从路径移除将路径上的文本转换为常规线性文本,切断其与路径的链接。
SVG
路径上的文本是 SVG 的一个标准特性。在 SVG 中,它有一个 textPath 子元素,包含实际文本,并通过 xlink:href 属性链接到路径对象(比较16.1 创建克隆)。
15.3 文本布局
15.3.1 方向
文本工具控制栏上的两个按钮允许您设置文本流的方向——水平(默认)或垂直。此功能主要用于适合垂直方向的文字(如日语),但在必要时也可以用于任何语言的文本对象:

图 15-9. 文本方向
注意
Inkscape 的垂直文本模式在用于书写日语的 tategaki 时存在一些缺陷;例如,连字符没有旋转,标点符号经常位置奇怪。
15.3.2 对齐
每个文本对象都有一定的对齐方式:左对齐(默认)、右对齐或居中对齐,您可以通过文本工具控制栏上的按钮进行选择。例如,当编辑左对齐文本时,按下
将光标水平移动到下一行的开头,并且您输入的文本会向右扩展,随着对齐边界的移动而移动光标。相比之下,在右对齐文本中,
将光标移动到上一行的末尾下方,并且您输入的文本会向左移动,而光标保持在原位。

图 15-10. 文本对齐和两端对齐
对于流式文本,还有一个额外的对齐选项:两端对齐,它会在每一行中扩展空格,使文本列的两端对齐。
15.3.3 字距调整
使 Inkscape 与其他大多数具有文本功能的软件区分开来的是,它可以自由移动每个单独的字符并调整字母之间的间距。不幸的是,大多数此功能都是“隐藏”的,因为它们只能通过键盘快捷键访问。
将光标置于字符之前,然后按下
。光标右侧的其余行将略微向右移动(在当前缩放下为 1 个屏幕像素;按箭头键与
结合使用时,移动距离是
的 10 倍;比较6.5.1 移动)。您所做的是调整两个字符之间的字距间隔;很容易将任何一对字符的字距调整得更近或更远,以达到文本行中最佳的整体平衡和视觉节奏。空格也可以进行字距调整,以根据需要将单词移动得更近或更远。
要可视化您添加的字距调整,只需选择文本(例如,通过
)。每当手动将两个字母的字距调整得更近时,它们的选取矩形将重叠,您将看到一个较暗的带状区域;相反,字距调整后的字符对将在选取覆盖层之间有一个间隙(图 15-11)。较暗的带状区域和间隙的宽度与您在该点添加的字距调整量完全对应。
通过放大查看,您可以进行更精细的字距调整。然而,不要过分沉迷;始终缩小查看,以了解整个文本行的上下文中您的间隔看起来如何。
水平字距调整对于路径上的文本特别有用。正如您在图 15-7 中可以看到的,字母在凹弯处往往太靠近,而在凸弧上则太远。通过手动字距调整,很容易抵消这种效果,并使字符沿曲线均匀分布。

图 15-11. 调整字符串中的字距间隔
注意
许多字体包含内置的字距调整指令;例如,一个字体可能指定当 Y 和 a 相邻时,它们通过字体的 0.03 倍的字距调整在一起。Inkscape 尊重这些自动字体字距调整指令。然而,如果您尝试手动调整这样一对字符的字距,您将禁用自动字距调整。这就是为什么第一个
来调整 Y 和 a 使其更靠近时,这两个字母可能会意外地跳得更远。别担心;只需继续按
以实现所需的字距间隔。
您也可以通过按
和
来垂直调整字符字距。水平和垂直字距调整的组合使您在文本字符串中定位单个字母时拥有绝对自由:

图 15-12. 结合水平和垂直字距调整
如果您通过鼠标拖动或按
-箭头选择一个或多个字符,应用字距调整快捷键将有效地通过在其前后插入两个相反的字距来相对于文本的其余部分移动所选片段:

图 15-13. 通过字距调整快捷键移动选择
最后,当光标在该字符之前时,您可以按
或
来旋转文本对象中的任何字符:

图 15-14. 旋转字符
这种旋转是围绕字符的基线原点进行的——它在基线(大多数没有延伸字母的底部所在的线,如i或m)的最左侧点。 (顺便说一下,当您使用选择工具选择每个文本对象的第一个字符时,基线原点在画布上显示为一个小的正方形。)
注意
由于历史原因,在流式文本中,水平和垂直字距调整以及旋转不可用,但仅在常规文本和路径上的文本中可用。
SVG
在 SVG 中,字距信息存储在text元素的dx(水平)、dy(垂直)和rot(旋转)属性中。每个属性包含一个由空格分隔的数字列表,每个数字对应于相同位置的字符。例如,dx="0 0 -2"表示这段文本中的第三个字符向左移动了 2 像素。
15.3.4 字母间距和行间距
如果您想将文本中的所有字符间距调整得更近或更远,而不仅仅是某些特定的字符对,这种调整称为字母间距(在其他软件中,有时也称为追踪);选择文本的全部或部分,然后按
来增加字符间距或按
来缩小字符间距(这些是 Selector 工具中缩放对象的相同快捷键)。
字母间距的理想量取决于文本的最终观看大小。通常,较小的字体大小需要更多的空间感,而较大的文本应该更紧凑:

图 15-15. 间距更宽(顶部)或更紧(底部)的字母
类似地,您可以通过按
和![httpatomoreillycomsourcenostarchimages1736214.png.jpg]来调整常规或流动文本对象之间的间距。这种调整会影响整个文本对象,而不管是否选择了任何文本。在文本和字体对话框(
)中,也提供了一个可测量的行间距控制,它以该字体大小自然行高的百分比来衡量。

图 15-16. 调整行间距
与其他快捷键一致,字母间距和行间距快捷键可以与
配合使用,效果增加 10 倍。
15.4 文本样式
从大多数观点来看,文本对象与其他任何对象类型没有区别;您不仅可以变换,还可以整体样式(选择填充或描边,调整不透明度,应用滤镜等),而无需进入文本工具(当然,也不会失去编辑文本的能力)。然而,只有文本工具允许您更改特定于文本的样式属性(如字体家族和字体大小),以及将样式应用于对象中的文本的span(片段)。
SVG
要有一个不同的样式,必须将文本片段包含在一个span元素中。当然,您不需要考虑它;对于您创建或删除的任何重叠或嵌套的 span,Inkscape 会自动管理span元素。
您可以更改文本样式的两个地方是文本工具的控制栏(在画布上方)和文本和字体对话框。前者更快更方便,而后者提供了更多选项。
15.4.1 非文本样式属性
当您在文本工具中选择一个文本范围时,大多数(但不是全部)的样式更改命令和样式报告 UI 元素应用于该文本范围,而不是整个文本对象。例如,您可以通过选择它并点击调色板中的颜色样本,使用填充和描边对话框 (8.1.1 绘画),或颜色手势 (8.5 选定样式指示器:颜色手势)来轻松更改文本范围的颜色。同样,您可以分配或删除描边或调整范围的透明度。但是,不能将模糊或其他滤镜应用于范围;如果您尝试这样做,整个文本对象将被模糊或过滤。
将渐变或图案填充分配给范围是可能的,尽管这有点棘手。您需要创建一个具有所需渐变或图案的单独对象,复制它 (
),然后使用文本工具选择一个文本范围,并将样式 (
)粘贴到它上面。不幸的是,您不能通过在渐变工具中拖动手柄来编辑这样的渐变。

图 15-17. 设置文本范围样式
通常,在设置文本范围样式时,粘贴样式技巧非常实用——它允许您快速在不同对象和文本的各个部分之间转移样式(包括颜色、字体、大小、字母间距等)。要从文本范围复制样式,您甚至不需要选择它;只需将文本编辑光标放置在范围内部任何位置并按
。
15.4.2 字体和变体
关于字体,Inkscape 的行为与一个现代图形应用程序的预期相符:它允许您使用在您的操作系统中安装的任何轮廓字体(TrueType、OpenType、Type 1)。
所有字体家族(不是单个字体)的列表,以及每个家族的图形样本,都可以从文本工具的控制栏中打开。您可以通过滚动列表来选择一个家族;如果您知道您需要的字体的名称,您可以点击将光标放置在编辑字段中并开始输入;将出现一个可能的完成下拉列表。

图 15-18. 在文本工具中选择字体
文本和字体对话框(
)中也提供了相同的字体系列列表,如图 15-19 所示。在这里,你不仅可以看到一个通用的小型样本,还可以看到所选文本对象在所选字体和字体大小下的预览。
许多字体在同一系列中包含变体。在控制栏中,你可以使用两个切换按钮设置所选文本范围的粗体、斜体(倾斜)或粗体斜体变体;预期地,
和
快捷键与这两个按钮的工作方式相同。在文本和字体对话框中,你可以看到该系列中所有可用的变体的完整列表,除了斜体和各种粗细(轻、中、粗、重等)之外,还可能包括宽度轴上的变化(紧缩、拉伸等)。一旦你在对话框中选择了一个需要的样式,点击应用以使更改生效。
注意
当你选中一个文本对象时,你选择的字体将应用于该对象;如果你选中该文本中的某个范围,只有那个范围将被格式化。如果没有选择任何内容,在控制栏中选择字体样式将更改文本工具的默认样式,该样式将应用于新创建的文本对象;在文本和字体对话框中,点击设置为默认按钮,使对话框中选择的样式成为默认样式。

图 15-19. 文本和字体对话框
15.4.3 字体大小
在控制栏和对话框中,字体大小只能以px单位设置(A.6 坐标和单位)。然而,在许多情况下,你甚至不需要使用这个数字控制;你可以简单地缩放整个文本对象,例如,使用选择工具(6.2 选择器:缩放)或键盘快捷键。然后,字体大小控制将考虑这种缩放来显示字体大小;例如,如果你将文本对象的字体大小设置为 12 px,然后将其放大两倍,你将看到其字体大小报告为 24 px。
15.5 文本扩展
扩展 ▸ 文本中的许多扩展对于处理文本对象很有用。它们包括:
-
一组大小写转换扩展:将文本转换为大写、小写、句子大小写(每个句子的第一个字母大写)、标题大小写(每个单词的第一个字母大写)、翻转大小写(将小写转换为大写,反之亦然)和随机大小写。所有这些扩展仅在所选对象上工作。
-
一个简单的替换文本扩展,你可以使用它在一个或多个文本对象中(必须被选中)搜索和替换文本子串。
-
Lorem ipsum:一个生成伪拉丁语无意义文本的生成器,传统上用于在设计样图中填充文本。您可以选择段落数量、它们的长度和它们的变体;此扩展会将选定的流动文本对象填充为文本,如果没有文本对象,它将创建一个新的对象以填充整个页面(有关示例输出,请参阅图 15-10)。
15.6 拼写检查
Inkscape 的内置拼写检查器可以同时使用多达三个字典。要设置它,请打开Inkscape 预设对话框,并选择拼写检查选项卡。例如,您可以使用法语作为主要语言,但添加英语和俄语作为第二和第三语言。这样,您可以检查这些语言中的任何一种或这些语言的组合,只有在这三种语言中都缺失的单词才会被标记为拼写错误。如果您只需要一种语言,请将第二和第三选项设置为无。

图 15-20. 在 Inkscape 预设中设置 Inkscape 拼写检查器
备注
在 Linux 上,您需要为要检查的语言安装 Aspell 字典;使用您发行版的标准软件安装程序进行此操作。在 Windows 上,Inkscape 预装了多种语言的字典(英语、法语、德语、俄语、西班牙语等)。
备注
许多语言有多种字典。例如,英语(en)有美国(en_US)、英国(en_GB)、加拿大(en_CA)和澳大利亚(en_AU)的变体;英国变体还根据首选动词后缀(en_GB-ise 或 en_GB-ize)进一步细分为子变体,等等。
一旦您使用
(或文本 ▸ 检查拼写)调用拼写检查器,它将依次检查文档中所有可见的文本对象(它们不需要被选中),从上到下、从左到右进行检查。找到拼写错误的单词后,它会在单词周围显示一个红色框架,并弹出一个对话框:

图 15-21. 检查文档的拼写
带有拼写错误的对象被选中;如果您正在使用文本工具,则编辑光标放置在拼写错误的单词的开始处。在对话框中,您可以执行以下任何操作:
-
从列出的建议中选择一个(它们来自所有活动字典)并接受它;除非您在列表中选择某项,否则此按钮将禁用。
-
忽略一次;下次遇到这个单词时,拼写检查器会再次标记它。
-
忽略该单词在此会话的其余部分;它将在此检查期间忽略该单词的任何其他实例,但下次您运行拼写检查器时,它将再次标记它。
-
添加该单词到活动字典中的一个,这样它就永远不会在这个或后续会话中被标记为拼写错误。
此外,由于对话框不会锁定 Inkscape 窗口,您可以使用文本工具简单地编辑单词,就像您通常做的那样。一旦您将其编辑为可接受的格式,拼写检查器将自动关闭红色边框并继续检查文档。
您可以随时通过点击停止或简单地关闭拼写检查对话框来停止拼写检查。当它停止时,您可以在任何时间点击开始来重新启动检查。
15.6.1 特殊字符
要输入键盘上没有的字符,您需要知道其 Unicode 编号。Unicode 是一个全球标准,涵盖了所有现有的和历史字母,以及大量其他特殊字符;查找字符的 Unicode 编号的最佳位置是 unicode.org。
一旦您知道了所需字符的十六进制 Unicode 编号,在编辑文本对象时按
,输入数字(注意状态栏以获取反馈),然后按
。该字符将被插入到文本光标处。以下是一些常用特殊字符:
| 名称 | 字符 | 十六进制数 |
|---|---|---|
| 破折号 | — | 2014 |
| 连字符 | – | 2013 |
| 右双引号 | ” | 201C |
| 右双引号 | ” | 201D |
| 右单引号 | ‘ | 2018 |
| 右单引号 | ’ | 2019 |
| 左双引号 | « | 00AB |
| 右双引号 | » | 00BB |
| 省略号 | ... | 2026 |
| 乘号 | × | 00D7 |
| 版权 | © | 00A9 |
| 注册商标 | ® | 00AE |
| 商标 | ™ | 2122 |
| 圆形项目符号 | • | 2022 |
如果您请求的字符在当前字体中存在,它将被使用;否则,Inkscape 将尝试找到系统上具有该字符的任何字体。如果失败,您将看到插入一个空格。
15.7 将文本转换为路径
尽管 Inkscape 具有强大的文本编辑功能,但有时您仍然可能希望将文本转换为路径——例如,编辑字母的轮廓,使用文本剪切某些内容(这需要路径),或者能够将您的 SVG 文档发送给可能没有您使用的字体的人。路径 ▸ 对象转换为路径 (
) 命令将对文本对象起作用,就像它对形状起作用一样(13.1.1 路径效果如何工作)。
与形状不同,文本对象不再是单一路径,而是由原始文本中的每个字符(符号)组成的一组路径。这使得 Inkscape 能够完全保留文本的外观,包括对其内部任何样式应用的任何样式。现在,您可以使用选择工具中的
-单击或节点工具中的简单单击来选择任何单个字母。如果您希望有一个与整个文本对象对应的单个路径,请选择 路径 ▸ 对象到路径 如上,然后使用 路径 ▸ 合并 (
) 将所有字符合并成一个具有统一样式的单个路径对象。
第十六章 克隆
克隆的概念——一个对象链接副本,当原始对象发生变化时它会自动更新——自然来源于矢量图形的思考方式。你可以说克隆不是一个真实存在的对象——而仅仅是一个命令:“在这里显示对象的副本。”文档存储的是这个命令,而不是对象的实际副本。实际的克隆对象仅存在于 SVG 应用程序(如 Inkscape)加载文档时的内存中。
使用克隆既有艺术上的原因也有技术上的原因。当你只编辑一个对象时,观察几个对象实时变化本身就是一种令人兴奋的体验,开辟了许多创意可能性。另一方面,使用克隆而不是副本可以使 SVG 文档更小,显示更快。地图符号、重复的设计元素(如项目符号或图标)、各种对称设计或图案——所有这些都可以通过克隆轻松完成。很少有其他矢量编辑器能像 Inkscape 那样直接、轻松地创建对象的实时链接副本。
16.1 创建克隆
要克隆一个或多个对象,只需选择它们并按
(或使用编辑 ▸ 克隆 ▸ 创建克隆)。这个可见的结果与复制(
)的结果完全相同:为每个选定的对象创建一个副本并将其放置在原始对象上方。如果你需要克隆多个对象作为一个整体,只需将它们组合在一起并克隆这个组合。
克隆是对象的链接副本。这个链接由什么构成?
最重要的是,克隆复制了原始对象的内容。如果它是路径(第十二章)或形状(第十一章)的克隆,那么它将精确地复制原始对象的形式,并在你使用节点工具或形状工具编辑原始对象时自动更新。如果它是文本的克隆,它具有相同的文本内容,并且当你使用文本工具编辑原始文本时也会实时更新。最后,如果你克隆了一个组合,你可以进入该组合(5.10 组内选择)来添加、删除或编辑组合内的对象——组合的克隆将立即更新。另一方面,由于克隆没有自己的内容,你不能编辑其内容——在克隆保持为克隆的情况下,无法进行节点编辑、文本编辑或取消组合。

图 16-1. 克隆是对象的链接副本。
那么,关于 变换 呢?如果你缩放、旋转或倾斜原始对象,所有其克隆都会做同样的事情。然而,如果你只是移动原始对象,默认情况下克隆将 不会 受到影响(尽管这可以改变,见下文)。当然,如果你同时选择原始及其克隆,你可以通过移动或其他方式以任何方式一起变换它们。

图 16-2. 克隆对原始的变换做出响应,除了移动。
你也可以完全独立于其原始对象移动、缩放、旋转或倾斜克隆。克隆自身的变换应用于从原始继承的变换之上。例如,如果你垂直挤压一个克隆,然后旋转其原始对象,克隆将同时旋转和挤压——但垂直挤压将在旋转之后应用于形状,导致倾斜,如图 16-3 所示。
原文风格也会传递给其克隆。如果你给原始对象涂上不同的填充或描边颜色,所有其克隆将同时采用相同的颜色。

图 16-3. 克隆自身的变换应用于从原始继承的变换之上。
相反,如果你尝试给克隆上色,它将简单地拒绝改变其颜色,保持与原始对象的一致。(同样,这个规则也有例外,我们将在下面看到。)
总结一下,以下是一个表格,列出了你可以在克隆及其原始对象上执行的操作以及这些更改如何相互影响:
| 移动 | 缩放、旋转、倾斜 | 节点或形状编辑 | 风格 | |
|---|---|---|---|---|
| 应用到 原始 | 默认情况下不影响克隆 | 影响克隆 | 影响克隆 | 影响克隆 |
| 应用到 克隆 | 是可能的 | 是可能的(在原始变换之上) | 是不可能的 | 是不可能的(除非在原始中取消设置) |
SVG
在 SVG 源中,克隆由一个svg:use元素表示。其xlink:href属性包含一个指向此克隆原始对象的 URL。根据 SVG 标准,此 URL 可以指向任何元素,无论是同一文档内的还是互联网上任何其他文档中的。然而,Inkscape 目前不支持跨文档引用,因此 Inkscape 中创建的任何克隆都必须在其原始对象所在的同一文档中。
16.2 克隆的变换
通常,正如我们所见,克隆可以被以任何你想要的方式变换;这个变换是在它从原始克隆继承的变换之上应用的。你可以使用任何变换方法:通过鼠标拖动、通过键盘变换(6.5 使用键盘快捷键变换)、对齐、分布和吸附,所有这些方法在克隆上工作得和在常规对象上一样精确。
另一方面,原始变换根据它们如何影响该原始的克隆被分为两组:简单的移动和其他所有操作。对于“其他所有操作”(缩放、旋转和倾斜)的变换直接传递给所有克隆。然而,简单的移动被处理得不同。
默认情况下,Inkscape 试图将克隆与原始克隆的移动隔离开来,以便在原始克隆移动时它们保持原位。在底层,这是通过将克隆向相反方向移动来实现的,以抵消移动。这种方法非常直观且通常方便;这样,例如,你可以移动一个大型克隆图案的原始克隆并将其移开,而不会打扰到图案。你也可以同时抓住原始克隆及其克隆并将它们移动到任何地方;它们会按照预期行为,即平行移动,即使克隆有自己的变换。
这种补偿行为可以通过用户进行调整。克隆选项卡位于Inkscape 首选项对话框中(图 16-4),包含以下选项:
-
第一个选项,平行移动,强制所有克隆,包括旋转或缩放的克隆,始终与原始克隆平行移动,就像它们总是与它一起被选中一样(即使实际上并非如此)。
-
第二个选项,保持不动(这是默认设置),强制那些未被选中的克隆保持不动(但那些被选中的克隆会像往常一样移动)。
-
最后一个选项,根据变换移动,关闭任何克隆运动补偿;现在每个克隆,无论是否被选中,都根据其原始克隆继承的变换进行移动,没有任何补偿。当存在复杂的变换时,产生的行为可能看起来令人惊讶且不可预测,但从 SVG 的角度来看,这是最不干扰的,因为继承的克隆变换没有被以任何方式篡改。

图 16-4. 设置克隆的运动补偿
还需要记住,变换克隆不会尊重选择器控制栏上的影响按钮(6.10 变换影响的内容);它总是表现得好像所有这些按钮都被按下。你不能以这种方式缩放克隆,以保持其描边宽度不变或其渐变不受影响——因为你实际上是在变换原始图像,而这个图像不能与原始图像有不同的描边宽度或渐变位置。
16.3 克隆的样式
在本章的开头,我提到克隆会继承其原始图像的样式。这是真的:红色矩形的克隆将是红色的。然而,对于这种限制,还有一些重要的例外和解决方案。
首先,不透明度(8.1.2 不透明度)和模糊度(17.1 模糊度)根本不受这种限制:你可以轻松地模糊一个克隆或使其半透明。这是因为这些属性会累积——也就是说,如果你先模糊某个对象,然后再模糊其父对象,这些模糊效果会相加,结果会比单独应用任何一个模糊效果都要模糊。这也意味着,如果你的原始图像已经模糊或透明度低于 100%,你可以使它的克隆更加模糊或更加透明,但不能更少。
这同样适用于滤镜效果(第十七章;实际上,模糊只是滤镜之一)。你可以将任何滤镜应用到克隆上,并且它会在原始克隆的任何滤镜之上应用。例如,你可以通过应用颜色矩阵滤镜原语(8.8 颜色扩展和滤镜)将红色矩形的克隆变成绿色或灰色。
但对于纯填充或描边颜色呢?即使它们在克隆中也可以被改变,但前提是原始图像必须配合。也就是说,你想要在克隆中更改的任何样式属性必须在原始图像中未设置。未设置(8.1.1 绘画)与设置为none不同;当一个属性没有为对象指定时,它就是未设置的,这允许克隆的属性生效。

图 16-5。如果原始图像没有设置绘画,克隆可以被上色。
Inkscape 在 填充和描边 对话框中有一个特殊的按钮,以及在所选样式指示器中的命令(8.4 选定样式指示器:绘图命令),用于取消对象的填充或描边属性。一个取消描边的对象简单地没有可见的描边,但如果你取消其填充,对象将显示为黑色。如果你想取消其他样式属性,你需要使用 XML 编辑器(4.7 XML 编辑器)并手动编辑对象的 style 属性,从克隆中移除你想要覆盖的属性。
如果你有一个组作为原始对象,那么你只能取消该组中某些成员的填充或描边,而让其他成员着色。然后,如果你克隆该组并绘制克隆,只有具有取消属性的对象才会采用该颜色,而其他一切都将保持与原始对象一致。
16.4 克隆链
复制(4.4 复制、剪切、粘贴和复制)或复制并粘贴一个克隆会给你另一个相同原始对象的克隆。(你可以复制然后粘贴一个克隆到不同的文档中,但只能与其原始对象一起;如果你尝试单独粘贴一个克隆,它最终会变成孤儿并不可见。)复制现有的克隆通常很方便,因为这个副本也会获得第一个克隆的变换和样式,如果它有的话。当然,你也可以简单地通过再次克隆原始对象来获得另一个克隆。
此外,没有任何东西阻止你克隆一个克隆对象本身。结果的对象——一个克隆的克隆——仍然会显示其最终原始对象的内容,但与其的链接不再是直接的;它现在成为了原始对象的孙子,而孩子(第一级克隆)则站在它们之间。这意味着孙子克隆首先从原始对象继承变换和样式,然后从其父克隆继承,最后,它在其之上有自己的变换和样式。这样的克隆-克隆链(可以是任何长度)很少有用,也不推荐,仅仅因为克隆的长链可能会对渲染性能产生不利影响;在几乎所有情况下,可以使用相同原始对象的多克隆,如图图 16-6 所示。
要确定你选择的对象是否是克隆,以及如果是克隆,它是什么的克隆,请查看状态栏。状态栏将描述你选择的对象,例如,为“克隆:组”或“克隆:克隆:路径”。如果你想确切知道所选克隆的父对象是哪个,请按
:Inkscape 将从克隆到其原始对象绘制一条虚线(该线条将在一秒后消失)并选择原始对象(图 16-7)。

图 16-6. 而不是克隆的克隆,使用相同对象的多个克隆。

图 16-7. 通过按
查找克隆的原始对象。
16.5 解除和重新链接克隆
克隆与其原始对象之间的链接是其主要特征;毕竟,这也是我们使用克隆的原因。这个链接在复杂设计中简化了许多任务——例如,你可以在网站原型中使用相同的克隆按钮或项目符号,通过更改它们的共同原始对象,一次更改所有这些元素。然而,有时这个链接会成为一个障碍,你想要独立于其原始对象编辑你的对象。为此,你需要解除克隆的链接。
选择一个克隆并按
(或选择编辑 ▸ 克隆 ▸ 解除克隆链接)。从外观上看,没有任何变化;但克隆不再被视为克隆,而变成了一个常规对象——原始对象的一个完整副本,保留了所有额外的变换和样式,现在完全独立并可独立编辑。你可以一次性解除多个克隆的链接。
如果你删除了克隆的原始对象会发生什么?默认情况下,其克隆会自动解除链接——也就是说,它们变成了被杀死的对象的完整副本。然而,在Inkscape 首选项对话框的克隆选项卡中,你可以选择不同的行为,并强制所有克隆在其原始对象消失时集体自杀:

图 16-8. 设置克隆孤儿行为的设置
当你重新链接一个克隆时,它仍然是一个克隆,但其原始对象会改变。手动重新链接的操作如下:假设你有一个对象 A 的克隆 C,但想让它成为 B 的克隆。选择 B 并将其复制到剪贴板(),然后选择克隆 C 并执行编辑 ▸ 克隆 ▸ 重新链接到复制的。之后,C 就变成了 B 的克隆——这取决于 B 是什么,可能会导致 C 改变形状、样式、位置、变换或这些的组合(图 16-9)。

图 16-9. 将克隆重新链接到不同的原始对象
手动重新链接是一个很少需要的操作。更有用的是复制时的自动重新链接。想象一下,你有一个复杂的对象组,其中一些是其他对象的克隆——例如,一个类似 3D 的图形按钮,其阴影是主形状的模糊克隆。现在,你选择这个整个组并复制它。会发生什么?
在组内,每个常规对象将复制为常规对象,每个克隆将复制为克隆。然而,克隆仍然会与源组中的原始对象链接——这很可能不是你想要的!对于复制的组中的阴影来说,更自然的是它是同一组中形状的克隆,而不是远处的其他组的形状。为了确保这一点,请转到相同的克隆选项卡并检查当复制原始+克隆时:重新链接复制的克隆。现在,在复制后,你将有两个独立的按钮,每个按钮都有一个可以独立编辑的形状和与其自身形状链接的阴影:

图 16-10. 复制时自动重新链接克隆
16.6 平铺克隆
巨大且强大的创建平铺克隆对话框(编辑 ▸ 克隆 ▸ 创建平铺克隆)基本上是一个一次创建许多克隆的工具。这些创建的克隆可以放置到许多种空间和颜色模式中,从绝对规则到完全随机化。此外,你还可以让这些克隆追踪其下方的图像。
16.6.1 大小和边界框
在你可以创建平铺克隆图案之前,首先要做的是选择你将要克隆的对象。我建议使用一个组来做这件事;即使你只有一个对象,也将其分组()。这样,你以后将能够向原始组添加更多对象,克隆将反映这一点。将原始对象放置在你想要填充图案的区域左上角。
在创建平铺克隆对话框中,首先指定平铺的尺寸(图 16-11)。你可以指定图案中的行数和列数,或者如果你有一些特定的区域要填充,你可以键入或粘贴其宽度和高度。请注意,太大的图案(克隆数量超过几千个)可能会显著减慢 Inkscape 的速度。

图 16-11. 设置图案的大小
要创建瓷砖(在你设置所有其他参数(如以下所述)或如果你只是信任默认值之后),点击创建按钮。图案出现在画布上,但你仍然选中了原始对象。删除按钮删除所选对象的所有先前平铺克隆。请注意,创建意味着删除——也就是说,一旦你点击创建,任何现有的平铺克隆(但不是由
创建的常规克隆)将被删除并替换为一个新的图案。
Unclump按钮的功能与对齐和分布对话框中同名的按钮完全相同(7.5.1 随机化、解簇和去除重叠),区别在于它只移动所选对象的所有平铺克隆,而不是所有选定的对象。解簇对于使随机图案更加均匀特别有用,而无需进行规范化。重置按钮将对话框的所有参数重置为默认值。

图 16-12. 解簇随机图案
当你第一次创建图案时,使用保存的平铺大小和位置复选框没有任何效果。然而,如果你修改了你要平铺的对象并再次创建图案,通常 Inkscape 将使用对象更改后的尺寸,这可能会导致图案的整体尺寸和瓷砖的对齐方式发生变化。为了使 Inkscape 使用你上次从该对象创建图案时相同的瓷砖尺寸,即使对象的尺寸已更改,请选中此复选框。例如,你可以从一个矩形创建图案,精细调整所有参数,然后删除图案,放大原始矩形,并使用此复选框重新创建图案。现在你将拥有与上次完全相同的图案,但瓷砖更大,相互重叠。(当然,你也可以简单地编辑原始图案,而不删除和重新生成图案。)因此,每个对象都可能记住其最后的“平铺尺寸”。
注意
请注意,所有图案都包含一个与原始对象完全重叠的克隆(除非随机化)。这意味着如果你丢失了原始对象的选择,只需单击原始对象的位置即可选择覆盖的克隆而不是原始对象。使用
-点击(5.9 从下方选择对象)或选择任何克隆并按
跳转到原始对象。
16.6.2 对称性
对话框的第一个选项卡标题为对称性。它只有一个列表,其中包含你可以从中选择一个用于图案的对称群。每个对称群都是将克隆转换以形成图案的特定方式。这不是 Inkscape 程序员的随意选择,数学家已经证明任何可能的平面上的规则图案都可以归类为这 17 种类型之一。有关每种对称性的完整描述,请参阅维基百科上的“壁纸群”文章。以下是类型的概述:
P1
-
这是最简单的对称性:图案砖块简单地重复在矩形网格中,没有任何旋转或翻转。
![基本对称性:P1]()
图 16-13. 基本对称性:P1
P2, PM, PG, CM, PMM, PMG, PGG 和 CMM
-
这些对称性使用 180 度的旋转以及垂直和水平翻转的各种组合。然而,所有这些对称性都使用与 P1 相同的矩形网格放置,网格单元的宽度和高度与原始对象的宽度和高度相同。
![带翻转和 180 度旋转的对称性]()
图 16-14. 带翻转和 180 度旋转的对称性
P4, P4M 和 P4G
-
这些对称性涉及 90 度的旋转,因此产生基于正方形的图案。P4M 对称性导致矩形砖块部分重叠;使用它时,使用三角形砖块以避免重叠并填充平面(图 16-15)。
![带 90 度旋转的对称性]()
图 16-15. 带 90 度旋转的对称性
P3, P31M 和 P3M1
-
这些对称性涉及 120 度的旋转,因此外观大致呈三角形。再次强调,P31M 通过部分重叠的砖块创建了一个更密集的图案,因此你可以使用“饼片”形状来填充这种对称性而不重叠。
![带 120 度旋转的对称性]()
图 16-16. 带 120 度旋转的对称性
P6 和 P6M
-
这些对称性将瓦片旋转 60 度,形成类似雪花的多边形图案。其中,P6M 再次重叠瓦片,需要“饼片”形状来填充平面而不重叠。
![具有 60 度旋转的对称性]()
图 16-17. 具有 60 度旋转的对称性
对于“密集”模式(P4M、P31M、P6M),这些模式重叠瓦片,以下技巧可能很有用:创建模式,然后缩小原始图像。这将使模式更加稀疏,其特征逻辑更容易理解。
当处理镶嵌(一种完全填充平面且无间隙或重叠的图案)时,即使您很好地理解了所选对称性如何工作,单独创建适当形状的瓦片也会非常困难。相反,只需从任何随机形状开始,使用所需的对称性从它创建模式,然后节点编辑原始路径,观察模式克隆如何重复其变化。这样,可以非常快速地产生令人惊讶的复杂镶嵌(参见24.2 处理 2:镶嵌)。
16.6.3 平移、缩放和旋转
对话框中的下一个三个选项卡允许您指定应用于图案瓦片的附加变换——即,在所选对称群暗示的平移、旋转和翻转之上进行的变换。
所有这些附加变换组件都可以分别按行和按列指定,每个值都可以包含一定程度的随机性。例如,您可以指定“使下一行的瓦片高 20%,使下一列的瓦片旋转 5 度,并使旋转角度随机变化 50%”。所有平移、缩放和随机化值均以原始对象尺寸的百分比来衡量。

图 16-18. 平移、缩放和旋转选项卡
下面是如何进行平移的说明:

图 16-19. 指定每行和每列的平移(PG 对称性)
也可能存在负平移。自然地,为了使所有克隆重叠原始图像,您需要指定Shift X: 每列-100%和Shift Y: 每行-100%。与每行的旋转结合,这使得轻松创建花朵或时钟面成为可能:

图 16-20. 指定每行和每列的缩放和旋转
您可以使值交替(例如,每行缩放克隆)。勾选累积复选框将使位移或缩放值累积;例如,通常每列位移 10 像素意味着每列相对于前一列位移 10 像素。如果您勾选累积,相同的值意味着每列相对于其前驱位移 10 像素更远——也就是说,第二列距离第一列 10 像素,第三列距离第二列 20 像素,以此类推。

图 16-21. 交替变换
对于复杂的对称性,一个自然的问题是:在计算变换值时,“行”和“列”应该是什么?Inkscape 通过对称簇(3、4、6 或 12 个克隆,取决于对称性)绘制复杂图案,在行内水平地从簇到簇。换句话说,属于同一簇的克隆被认为是同一行但不同列。这意味着按行位移值通过位移簇的行或均匀缩放每个簇中的克隆来工作,而按列值独立影响每个克隆,因此簇失去了对称性。如果您想在两个维度上均匀分布对称簇,只需创建一个具有所选对称性的单个簇,然后将其分组,并用简单的 P1 对称性平铺该组,可能还有交替位移。

图 16-22. 变换复杂对称性
16.6.4 模糊度和不透明度
此对话框标签看起来和操作方式与变换标签非常相似;在这里,您可以按行或按列调整图案中克隆的模糊度和不透明度(即淡出值),可选交替或随机化。请记住,您只能使克隆比其原始图像更模糊或更透明,但不能更模糊或更透明。

图 16-23. 图案中变化的模糊度和不透明度
16.6.5 颜色
如我们在16.3 克隆样式中看到的,如果您想用克隆自己的颜色进行绘制,您需要取消原始中相应的属性。一旦您为要更改的绘制(填充、描边或两者)完成了这一步,创建平铺克隆对话框允许您创建各种颜色图案。
对话框中的颜色选项卡看起来与我们已知的所有选项卡非常相似。在这里,您可以按行或按列改变克隆颜色在 HSL 模型中的三个组件——色调、饱和度和亮度(8.2.3 HSL)——以及交替或随机化这些变化。您还需要指定所有这些变化将开始的初始颜色;只需单击颜色样本并使用颜色选择对话框。请记住,原始颜色必须没有设置填充或描边,否则此选项卡将没有任何效果!

图 16-24. 为颜色选项卡设置初始颜色
例如,从红色开始,每行和每列色调变化 5%,您将得到一个倾斜的彩虹,如图色插页中的图 10 所示。
16.6.6 跟踪
Create Tiled Clones对话框的最后一个选项卡(图 16-25
图 16-25. 跟踪选项卡
-
处理值的可能方式包括:
伽玛校正
- 正向伽玛将选择的值向上移动,负向伽玛将其向下移动。
按给定百分比随机化
- 值将具有给定大小的随机成分;0%随机化意味着值与选择的值完全相同,100%随机化意味着它是完全随机的,并且完全不依赖于选择的值。
反转
- 将高值转换为低值,反之亦然。
如果选择了颜色,此处理将独立应用于其每个组件,如图色插页中的图 11 所示。
-
最后,得到的值可以应用于克隆的存在概率(0 表示在此位置克隆不存在,1 表示存在,中间值使其以给定概率出现);颜色(如果已选择背景颜色,则可以直接重用;否则,将单个值转换为灰色阴影),大小(从 0 的消失到 1 的完整大小),以及不透明度(较小的值使克隆更加透明)。可以同时启用任意数量的这些选项;例如,你可以选择亮度,将其反转,并将其应用于克隆的不透明度和大小(参见彩色插页中的图 12)。
第十七章。过滤器
Inkscape 的过滤器是一种将复杂的位图处理算法应用于绘图对象中的方法。忠实于矢量精神,过滤器是非破坏性的:您可以随时更改任何过滤器的参数,原始矢量对象仍然可以完全编辑。过滤器可以做到的事情包括模糊、锐化、颜色调整、添加纹理、各种扭曲、类似于 3D 的斜面效果以及许多其他效果。此外,您可以将过滤器组合成任意复杂的过滤器堆栈。
SVG 过滤器(由 SVG 标准定义并由 Inkscape 实现)非常强大;一本整本书都可以写它们的用途和能力。不幸的是,它们也可能相当技术性,尤其是如果您试图自己组合过滤器堆栈。因此,在本章中,我们将首先探讨一些简单使用过滤器的方法,例如模糊控制(17.1 模糊)和预设过滤器效果(17.3 预设过滤器)。然后,对于那些寻求更多灵活性和不怕技术性的人,我们将讨论强大的过滤器编辑器对话框(17.4 过滤器编辑器对话框),它允许您从标准过滤器原语创建自己的过滤器堆栈。
17.1 模糊
我们在本书中多次看到了模糊的使用。正确地称为高斯模糊(以德国数学家卡尔·弗里德里希·高斯命名),这种效果平滑地“溶解”了对象,就像通过一个失焦的镜头观看它一样。模糊是 Inkscape 支持的 14 个过滤器原语之一——但在所有这些原语中,模糊拥有最用户友好的界面:您可以在填充和描边对话框中,通过简单的滑块随时调整任何对象:

图 17-1。填充和描边对话框中的模糊滑块
因此,可以说 Inkscape 将模糊视为对象的基本属性之一,就像它的不透明度一样。为什么会有这种特殊处理?一方面,这是因为模糊对象是一种非常自然、基本操作。模糊在物理世界中无处不在:非清晰的阴影、发光以及模糊或移动中的物体都可以通过模糊来渲染。因此,如果您想绘制任何逼真的图像,这个过滤器是绝对必要的。另一方面,模糊不是您可以用常规矢量形状或渐变轻松模仿的东西。因此,通过添加一个易于访问的滑块,Inkscape 的功能得到了极大的扩展。
模糊滑块控制模糊的量,范围从 0 到 100%;1%的设置几乎不会改变对象的外观,而 100%则将任何对象变成无形状的团块。百分比确保这个比例对任何大小的对象都起作用;换句话说,一个被 10%模糊的大对象有更大的绝对模糊量(更大的模糊半径),但它看起来与也被 10%模糊的小对象完全成比例。如果你想在不同大小的对象中获得相同的模糊半径,你需要使用不同的模糊量。

图 17-2. 模糊量(A 和 B 相同)和模糊半径(A 和 C 相同)
你会注意到,模糊一个对象会影响其边界框(只有当使用视觉边界框类型时,4.2 边界框)。扩展的边界框将覆盖对象的全部模糊边缘。
每个模糊的对象都是单独处理的,就像它自己的完全透明的层一样,因此它永远不会“涂抹”任何相邻的非模糊对象。由于该对象的每一层本身是透明的,模糊对象的边缘就变得部分半透明。然而,你可以模糊一个组,在这种情况下,组中的所有成员都会一起模糊,就像它们被放置在一个整体模糊的单层上。在图 17-3 中,左侧有两个相邻的矩形,它们之间没有间隙也没有模糊。在中间,每个矩形分别模糊了 20%;正如你所看到的,条纹背景可以通过物体之间的模糊间隙看到。然而,在右侧,相同的两个矩形首先被分组,然后整个组以 20%的百分比模糊;现在没有间隙——模糊只会在边缘添加透明度,但它不能揭示被不透明组中心完全覆盖的内容。

图 17-3. 模糊单独的对象与模糊一个组
此外,分组允许你将多个模糊层应用于同一对象。例如,你可以先模糊对象本身,然后将其分组(可能甚至只是与自身分组,即把单个对象放入组中)并模糊该组。自然地,通过模糊一个组,你可以使任何成员对象比之前更模糊,但不能更模糊。(同样,正如我们在16.3 样式克隆中看到的,你可以使克隆比原始对象模糊更多,但不能更少。)
注意
模糊与羽化不同。模糊影响整个对象;特别是位图对象上的线条或复杂组内的对象边界都会被模糊。另一方面,羽化仅仅是模糊的透明度,它遮盖了对象的边缘(如照片)。Inkscape 也可以使用预定义的复合滤镜进行羽化(17.3 预设滤镜**)。

图 17-4. 模糊与羽化
17.1.1 模糊和变换
如果你变换一个模糊对象会发生什么?
移动一个模糊的对象并不很有趣:对象只是整体移动,保持与之前一样的模糊。成比例(均匀)缩放也会将对象整体缩放,包括模糊半径,因此模糊量相对于对象大小保持不变(即,填充和描边对话框中的百分比指示器不会改变)。
非均匀缩放更有趣。例如,如果你垂直挤压一个模糊对象,它的模糊也会随之挤压并变得非均匀——现在对象在水平方向上的模糊比垂直方向上更多。这种非均匀模糊有时被称为运动模糊,因为它近似了在快速运动(在这种情况下,水平方向)中捕捉到的对象在照片上的外观。因此,如果你想对原始未挤压的对象应用运动模糊,只需先将其向相反方向拉伸,然后模糊它,最后将其挤压回形状(这仅适用于路径和位图):

图 17-5. 逐步展示运动模糊
另一种创建非均匀运动模糊的方法是通过调整滤镜编辑器对话框中高斯模糊滤镜的参数(17.4 滤镜编辑器对话框),但这里描述的拉伸/挤压方法通常更容易。
注意
如果你对在 SVG 层面上如何实现这一点感兴趣,关键是要确保模糊应用于具有 transform 属性的对象(A.7 变换),这样可以确保模糊也会受到该变换的影响。当你拉伸一个没有模糊的路径对象时,这种拉伸默认嵌入到路径的点中(12.5.7.3 节点变换);但是一旦应用了模糊,反向挤压将相反地添加 transform 属性,影响模糊。
要在组或文本对象(即不是路径或位图)上创建运动模糊,请使用这个技巧:拉伸对象,然后将其分组(
,4.5 组),对组应用模糊,然后将其挤压回去。分组步骤确保最终得到一个具有正确比例的对象,同时挤压转换属性也会影响模糊效果。
类似的评论也适用于许多其他过滤器在转换时的行为。例如,挤压和/或旋转对象可以使你创建纹理过滤器的透视扭曲变体(17.3 预设过滤器),以便应用于 3D 场景中的墙壁和地板(11.3 3D 盒子)。当然,通过拉伸和挤压对象来转换过滤器并不像在画布上拖动手柄那样方便——但它有效。
注意
过滤器作用于屏幕上对象的渲染图像——也就是说,它们总是以位图的形式作为输入,这是为当前缩放级别创建的。这就是为什么过滤器可能如此慢的原因:每次你放大或缩小,过滤器都会重新应用于对象的新的渲染。这也解释了为什么某些过滤器可能根据缩放看起来有些不同。例如,当在 100%缩放时应用于位图对象的锐化过滤器,其工作方式正如你所期望的那样。然而,如果你足够接近地放大,你将看到位图对象的像素作为矩形(1.1 矢量图形是什么以及为什么它很重要),锐化现在将应用于这些像素矩形的边缘!
17.1.2 模糊调整
调整工具的模糊模式会在画笔下的所选对象上应用更多的模糊(默认情况下)或更少的模糊(当按下
时)。添加或移除的模糊量取决于力量、笔压(如果你使用的是平板笔)、对象与画笔中心的接近程度以及你应用画笔的时间。
17.2 混合模式
混合模式是另一种类型的过滤器,Inkscape 有专门的控件来处理。选择混合模式会影响对象的颜色如何与下方的背景对象混合(即混合)。
然而,与可以应用于任何单个对象的模糊不同,Inkscape 只允许你将混合模式分配给图层(4.6 图层);相应的控件在图层对话框中。这在 SVG 处理这些过滤器的方式中有其原因;对你来说,这意味着你只能一次性更改图层中所有对象的混合模式,并且该混合模式将影响该图层中的对象如何与下层的对象混合,而不是它们之间。
五种混合模式包括:正常(默认;切换到此选项以移除任何不寻常的混合),乘法,屏幕,变暗,和变亮。在正常模式下,只有非 100%不透明度才能使顶层中的对象呈现半透明;在其他所有模式下,底层对象即使没有任何透明度也能“透过来”。以下是一个演示:

图 17-6。所有大矩形都在背景层,所有小矩形都在前景层,并设置了各种混合模式;各处的透明度都是 100%。
混合模式最常见的一个应用可能是用于着色位图。例如,想象你有一张彩色照片,但想将其完全或几乎变为单色,例如,使用棕褐色或蓝色色调,以匹配你的构图色彩方案。
当然,你可以在位图上叠加一个半透明的目标颜色矩形,但这并不能完全去除位图本身的颜色;更糟糕的是,位图会褪色并失去对比度。你还可以在外部位图编辑器中调整位图的颜色(如果它尚未嵌入到你的 SVG 中,18.2 链接与嵌入),或者你可以使用预定义的合成过滤器,如棕褐色,但这些选项不够灵活。相反,将照片放在一个层上,将着色矩形放在其上方的单独层上,并更改该顶层(见图 13 的颜色插入)的混合模式。
-
乘法和变暗模式主要对照片的亮区域进行着色。因此,如果着色颜色本身较亮,它将很好地着色你的照片同时保留其对比度;如果着色颜色较暗,结果可能会过暗。
乘法和变暗之间的区别在于,对于每个像素,变暗只是选择背景和前景颜色中较暗的一个,而乘法实际上是将两种颜色结合起来。尝试两者,并选择适合你照片的一个。
-
屏幕和变亮模式主要对照片的暗区域进行着色。因此,如果着色颜色本身较暗,它将很好地着色照片同时保留其对比度;如果着色颜色较亮,它将只是“漂白”照片,使其整体过亮。
再次,屏幕和变亮之间的区别在于,对于每个像素,变亮只是选择背景和前景颜色中较亮的一个,而屏幕实际上是将两种颜色结合起来。尝试两者,并选择适合你照片的一个。
总结来说,如果你的着色颜色较暗,使用屏幕或变亮模式;如果它较亮,使用乘法或变暗模式。通过调整着色层对象的透明度来调整着色量。
17.3 预设过滤器
Inkscape 随附了大量的预设组合过滤器。要将预设过滤器应用于任意数量的选定对象,只需从过滤器菜单的子菜单中选择一个命令。大多数过滤器将立即应用;少数过滤器首先会显示一个简单的对话框,您可以在其中调整它们的参数,类似于任何其他扩展效果(见13.3 路径扩展;此类过滤器在菜单中的名称末尾有“...”):

图 17-7. 预设过滤器效果
要获取单个预设过滤器的简要描述(或任何菜单命令,无论如何),只需将鼠标悬停在菜单中的命令上并阅读状态栏。在此处,我将不会描述所有预设过滤器;它们有数十个,并且每个 Inkscape 版本都会添加更多。相反,这里是对分组相似过滤器的子菜单的简要描述:
-
ABC子菜单收集了最常用的简单基本过滤器,通常只包含一个或两个基本形状。它们包括:
-
类似烟雾的“分形噪声”纹理应用于填充(噪声填充)或透明度(噪声透明度)。
-
带有光泽(镜面光)或无光泽(漫射光)的 3D 斜面。
-
羽毛 (图 17-4) 将模糊的不透明度蒙版应用于对象的边缘。
-
粗糙化随机扭曲对象的形状。
-
简单模糊添加少量高斯模糊(17.1 模糊)。
通常,这些过滤器不是单独使用,而是作为更复杂过滤器的组成部分,您只需通过将多个预设过滤器堆叠在一起即可构建这些过滤器。您甚至可以通过多次将过滤器应用于同一对象来大致调整过滤器的数量(对于更精确的过滤器参数调整,您需要访问过滤器编辑器,17.4 过滤器编辑器对话框)。
![ABC 子菜单中的过滤器]()
图 17-8. ABC 子菜单中的过滤器
-
-
斜面子菜单展示了斜面主题(伪 3D 凸边)的许多变体:在这里,您将找到不透明和半透明的材料,有光泽和无光泽的表面处理,由多个光源照亮的斜面,带阴影和不带阴影,中间有凹槽和凸边等。所有这些过滤器大多保留了对象的原始颜色,尽管它们可能在某些地方使其变亮或变暗以产生 3D 效果。
![斜面子菜单中的过滤器]()
图 17-9. 斜面子菜单中的过滤器
注意
如果您想改变投射到斜面对象上的光的方向,打开过滤器编辑器,选择应用在对象上的过滤器堆栈中的镜面光或漫射光原语,并调整方位角参数。
-
模糊子菜单提供水平和垂直运动模糊,对象后面的柔和模糊光,不同的方法来模糊对象内部的颜色边界同时保持其轮廓清晰(消逝,模糊内容和交叉平滑),噪点模糊结合形状扭曲和模糊,以及一些其他过滤器(图 17-10)。
![来自“模糊”子菜单的过滤器]()
图 17-10. 来自“模糊”子菜单的过滤器
-
颜色子菜单包含仅修改应用对象颜色的过滤器。在这里,您可以找到将任何对象转换为灰度的去饱和度,棕褐色,反转和反转色调,各种着色过滤器(着色,太阳能化,月亮化),以及其他。
-
扭曲过滤器通过水平拉伸抖动扭曲对象的形状,就像水中的反射(涟漪),边缘的随机粗糙化(撕裂边缘),不连接的块的散射(粉笔和海绵),或者与不均匀纹理结合的边缘扭曲(像素涂抹)。粗糙内部过滤器保持轮廓完整,但粗糙化对象内部的任何颜色边界。
![来自“扭曲”子菜单的过滤器]()
图 17-11. 来自“扭曲”子菜单的过滤器
-
图像效果是主要适用于位图的过滤器,例如锐化,边缘检测,浮雕或油画。
![来自“图像效果”子菜单的过滤器]()
图 17-12. 来自“图像效果”子菜单的过滤器
-
遮罩工具子菜单包含几个使对象部分透明的效果。其中最基本的是橡皮擦,它使对象中的所有白色区域透明。例如,如果您在黑色矩形上叠加一个小白圆圈,将它们组合在一起,并应用橡皮擦到组上,白色圆圈将变成一个洞,背景将通过这个洞显示出来。
-
材料子菜单展示了一系列各种材料的模仿:木材,金色飞溅,大理石,蜡,豹皮,等等。大多数这些过滤器丢弃对象的原始颜色并使用它们自己的颜色。
![来自“材料”子菜单的过滤器]()
图 17-13. 来自“材料”子菜单的过滤器
-
形态学子菜单包含通过在对象中切割孔洞,添加轮廓等方式处理对象形状的过滤器。
-
非现实着色器子菜单中的滤镜将单色对象添加柔和或清晰的阴影,突出某些区域并使其他区域变暗,这可能对卡通很有用。这与厚斜面有点相似,但它更深入,产生更有趣和逼真的形状。
-
叠加不会改变对象本身,而是将其视为显示某种纹理的垫子,将其作为叠加添加到对象的原始颜色上。
![来自“叠加”子菜单的滤镜]()
图 17-14. 来自“叠加”子菜单的滤镜
-
脊子菜单中的滤镜将对象变成边缘上的狭窄脊,并以各种方式处理这个脊。
![来自“脊”子菜单的滤镜]()
图 17-15. 来自“脊”子菜单的滤镜
-
散射子菜单中的滤镜将对象分解成各种形状的碎片——树叶、立方体(看起来更像正方形)、随机的喷溅斑驳,并将这些碎片随机散布。
-
阴影和发光子菜单中的滤镜以某种方式处理对象的边缘,通常使用高斯模糊。在这个类别中,最广泛使用的滤镜可能是投影阴影和投影发光,它们除了前者创建黑色阴影而后者创建白色发光(除非你的对象下面有深色背景,否则不可见)之外,其他都相同。对于这两个滤镜,你可以调整模糊量、阴影或发光的不透明度以及其偏移量。
![来自“阴影和发光”子菜单的滤镜]()
图 17-16. 来自“阴影和发光”子菜单的滤镜
-
纹理子菜单包含各种自然纹理:皱巴巴的塑料、果酱涂抹、树皮、水平条纹地毯,以及许多其他纹理(见图 17-17)。
![来自“纹理”子菜单的滤镜]()
图 17-17. 纹理子菜单中的滤镜
要移除应用于所选对象的任何滤镜,请使用滤镜 ▸ 移除滤镜命令。你还可以通过将它们叠加在一起以任何顺序组合预设滤镜;例如,在你更改对象的纹理之后,你可以向其添加投影阴影。移除滤镜命令将移除你应用的所有滤镜,而不仅仅是最后添加的那个。
如果应用过滤器的比例不是您需要的(例如,气泡或羽化边缘对于您的对象来说太大或太小)并且过滤器不允许您通过对话框进行调整,您可以使用这个简单的技巧:将对象放大(或缩小),例如通过按
或
几次,然后应用过滤器,并将结果按相同的倍数缩小(或放大)。
这里所述的说明和插图仅涵盖了预设过滤器的一部分。如果您想查看所有预设过滤器,请从 Inkscape 安装目录的 share/examples 目录中加载 filters.svg 文件。
注意
您可以轻松地将自己的预设过滤器添加到菜单中——无需编程!一旦您有一个包含您想要重复使用的过滤器的 SVG 文件,只需将该文件放置在 Inkscape 配置目录的 Filters 子目录中(Linux 上的 ~/.config/inkscape,Windows 上的 Documents and Settings<your username>\Application Data\Inkscape;如果尚不存在,请在那里创建 Filters 子目录)。之后,该文件中定义的所有过滤器都将列在 过滤器 下的 个人 子菜单中。(所有这些过滤器将立即应用;不幸的是,您目前无法不进行一些编程就创建带有调整对话框的过滤器。)
注意
Inkscape 附带的自定义过滤器不仅本身很有用,而且也是创建您自己的派生过滤器的起点。一旦您熟悉了过滤器原语和过滤器编辑器对话框,选择一个预设过滤器——最接近您想要得到的效果——并从它开始工作通常比从头开始要容易得多。
17.4 过滤器编辑器对话框
现在,让我们看看 Inkscape 的主要过滤器功能:过滤器编辑器对话框(如图 17-18 所示 Figure 17-18). 使用 过滤器 ▸ 过滤器编辑器 . . . 命令打开它。

图 17-18. 过滤器编辑器对话框的主要区域
17.4.1 过滤器列表
对话框左上角列表中包含您文档中定义的所有过滤器。您可以选择任何过滤器,并在对话框中编辑其结构和参数。如果当前选定的对象应用了过滤器,该过滤器将在列表中有一个勾选标记;因此,通过设置或移除勾选标记,您可以为任何对象应用或取消应用任何过滤器。(注意,即使未使用的过滤器也会保留在列表中;要从文档中删除它们,请使用 文件 ▸ 清除定义 命令。)
在列表下方,有一个新建按钮用于添加新的过滤器。如果你在一个空文档中打开了这个对话框,过滤器列表也是空的;现在,按新建来创建一个新的空过滤器,通常称为filter1(要重命名,只需在列表中点击选中的名称并输入)。你也可以通过右键点击列表中的过滤器并使用相应的弹出菜单命令来复制或删除过滤器。
之后,你可以在文档中创建或选择某个对象,并勾选你的新过滤器旁边的复选框。没有任何变化——一个空过滤器不会影响对象的渲染。为了让过滤器真正发挥作用,我们需要向其中添加一些原始元素。
17.4.2 原语堆栈
将你的注意力转向过滤器列表右侧的区域。这是主要的过滤器构建板,在这里你可以列出、排列和连接构成过滤器的原始元素堆栈。最初,它是空的,因为我们还没有向我们的过滤器添加任何原始元素。
Inkscape 支持的 14 个不同原始元素列在构建板下方的下拉列表中。当你从列表中选择一个原始元素时,它会在下方显示一个简短的描述和插图。你可以在对话框中阅读描述,以获得每个原始元素的基本概念。所有原始元素的详细解释超出了本书的范围;如果你想要所有详细的技术细节,请参考 SVG 规范(w3.org/TR/SVG11)。
相反,让我们逐步创建一个相当复杂的过滤器,它使用几个不同的原始元素来获得对整个工作流程的整体理解。我们将构建的过滤器称为 Sandy Blur;我为玫瑰图像的背景着色设计了它(见图 24-5). 这个过滤器旨在模仿粗糙纸张上的模糊水彩笔触。
简单的高斯模糊不够满意:它太平滑,太像计算机生成的,太无聊了。为了达到可接受的水彩模仿效果,我们需要模拟纸张纹理的小尺度粗糙度和水彩颜料在不同地方流动和粘附不同而产生的较大尺度“斑驳”。对于这两种不均匀性的来源,我们将使用湍流原语,它在给定的尺度上创建随机的分形“噪声”。

图 17-19. 两个湍流原语
两个湍流原语是我们过滤器的第一个两个组件——堆栈中最顶部的两个盒子。每个过滤器原语都有一个或多个输入和一个输出;在列表中,输入是通过从右侧水平进入原语框的线条表示的,而输出是从框垂直向下的线条。正如你所见,一些原语的输出是其他原语的输入。
你可以通过拖动来自定义连接;首先从原语框右侧的输入三角形开始拖动。通常,信息在原语堆栈中从上到下流动;最底层原语的输出是你看到在文档窗口中渲染的内容。你也可以通过拖动来重新排列原语;右键菜单允许你复制或删除一个原语。
右侧垂直堆叠的盒子是什么?这些是任何原语都可以用作输入的预定义源。最有用(并且,截至版本 0.47,是唯一完全实现的)是源图形和源 Alpha。源图形,正如其名所示,提供了我们正在过滤的对象的原始渲染图像,以当前缩放的分辨率。源 Alpha则不同,它提供了原始对象的不透明度(alpha)遮罩的灰度表示;因此,在源图形中完全不透明(无论颜色如何)的点在源 Alpha图像上将是完全不透明的黑色,而透明的点将是透明的黑色。
17.4.3 原语的参数
让我们再次看看堆栈顶部的两个湍流原语。它们都接受源 Alpha作为输入,并将它们的输出(随机噪声)传递给其他原语。将它们区分开来的是这些过滤器的参数。
当你在堆栈中选择一个过滤器原语时,其参数将显示在对话框的底部区域。以下是两个湍流原语的参数:

图 17-20. 两个湍流原语的参数
正如你所见,这两个原语具有相同的类型(分形噪声,在我们的情况下比另一个选项湍流看起来更好)但在基本频率和八度上有所不同。基本频率参数决定了湍流的尺度;频率越高,结果纹理越小,类似沙子;而频率越低,产生的云越大。八度的数量在分形术语中指定了算法的递归深度:增加八度会产生更尖锐的不均匀性,具有更多的小细节;减少此值将得到更平滑、更模糊的图像。
现在,我们需要将我们的湍流输出组合在一起。为此,我们将使用另一个名为复合的原语:

图 17-21. 复合原语
它有两个输入,并使用多种方法中的一种将它们逐像素组合。在这里,我使用了算术方法;使用提供的系数数值(K1到K4),将大尺度波和细小涟漪组合成具有略微增强对比度的复合图像,如图图 17-22 所示。

图 17-22. 组合两个湍流的結果
注意
请参考 SVG 规范(w3.org/TR/SVG11)以获取复合过滤器在不同模式下使用的详细公式。
到目前为止,我们没有使用我们将要应用滤镜的对象的图像——也就是说,没有使用源图形。假设那个对象是一种类似宽画笔的路径,可能使用书法笔工具(14.3 书法笔工具)创建。当然,我们首先需要做的,是将单色、边缘清晰的路径模糊化,使其更像水彩笔触:

图 17-23. 高斯模糊原语
高斯模糊的标准偏差参数与你在填充和描边对话框中调整的模糊量相似(图 17-1),只不过在这里它是用绝对px单位测量的(A.6 坐标和单位)而不是对象大小的百分比。
我们如何将模糊的笔触与湍流结合?复合在这里不起作用。它的任何模式都只会导致平滑的模糊与湍流的涟漪叠加,但底层的平滑性不会消失(试试看)。它看起来根本不像在粗糙的纸上画的水彩画——它看起来更像是通过有斑点的玻璃看到的计算机生成的模糊。
让我们考虑一下当你用真正的画笔在真正的纸上作画时会发生什么。你的笔触模糊是由画笔的柔软性造成的——你在画笔的中间施加的压力比在边缘大。当画笔遇到纸上的凹坑时,这种压力会改变;如果这个区域的纸是凸起,它会被更强烈地涂上颜色,就像它更接近画笔的最大压力点;如果它是凹陷,它会涂上较少的颜料。换句话说,纸张的粗糙度在绘图平面上使模糊的笔触产生抖动,就像随机地将笔触的部分向侧面移动。我们如何通过过滤器实现这一点?
位移图原语是这项工作的完美匹配。它根据第二个输入移动其像素。你可以选择第二个输入的哪个通道(红色、绿色、蓝色或 Alpha)将在两个轴方向(X 和 Y)上移动第一个输入,以及缩放这种位移。在我们的情况下,第一个输入是模糊的对象,第二个输入是合成湍流场,我们为两个轴都取 Alpha 通道:

图 17-24. 位移图原语
作为额外的奖励,结果在某些区域看起来较为粗糙,而在其他区域则较为平滑。这是因为,在平滑区域,位移图击中了模糊笔触的几乎平坦的内侧部分,在那里,高频抖动只是在几乎相同颜色的像素之间移动,而不会破坏平滑性。然而,在笔触的边缘,不同颜色的像素混合并抖动,产生了明显的粗糙感。所有这些都被低频噪声进一步调制,从而产生了一个非常令人信服的水彩模拟效果。
然而,如果你将这个过滤器应用于浅色笔触(而不是如图 17-24(ch17s04.html#displacement_map_primitive "图 17-24. 位移图原语")所示的黑色),结果仍然不是非常完美。当你看着一张真正的粗糙纸张上的水彩笔触时,你所看到的不只是油漆的分布;你还看到粗糙本身,它看起来像是一系列的阴影。没有这种阴影,我们的过滤器仍然使浅色笔触看起来过于不自然地平坦。幸运的是,这很容易解决;我们已经有了一个高频湍流源,如果我们只是将它与我们的位移映射模糊组合,它将很好地作为阴影工作,如图 17-25(ch17s04.html#final_filter_and_the_parameters_of_the_l "图 17-25. 最终的过滤器和最后覆盖阴影的复合原语的参数")所示。
现在过滤器看起来相当不错,我们可以宣布它完成了。你可以继续工作,添加各种涂抹、水迹、扩散等等;然而,由于我的演示图像只使用了这个过滤器作为背景,我认为它已经足够好了。

图 17-25. 最终的过滤器和最后覆盖阴影的复合原语的参数
17.4.4 过滤区域
在过滤器编辑器对话框中,过滤器参数区域的第二个标签页被称为过滤器常规设置。它包含适用于整个过滤器堆栈的参数,而不是任何单个原始参数。目前,您可以在这里更改的唯一内容是过滤器区域——过滤器将要渲染到的区域,以应用过滤器的对象的边界框的单位来衡量。
坐标行指定区域的左上角,而尺寸行指定右下角。例如,如果您将坐标设置为 0/0,将尺寸设置为 1/1,则该区域将正好等于边界框。如果您的过滤器以任何方式不超出对象——例如,如果您只是使用颜色矩阵原始参数进行颜色更改,这将工作得很好。然而,如果您在过滤器中使用类似模糊这样的功能,它需要超出边界框进行绘制,您必须提供足够的边距以防止裁剪。当您通过填充和描边对话框应用模糊时,这些边距会自动为您设置;然而,当从头开始创建新的过滤器堆栈时,您必须自己注意这一点。默认值是坐标为 0.1/0.1,尺寸为 1.2/1.2,这会在对象的四周产生 10%的边距,如图图 17-26 所示。

图 17-26. 指定过滤器区域
如果使用视觉边界框选项(这是默认设置,见4.2 边界框),则过滤对象的边界框——您在选择器中选择时看到的框架——是扩大的过滤器区域。这包括其他事情,这意味着,当将选定的对象导出为位图(18.9 位图导出)时,Inkscape 将确保位图包含模糊的边缘而不会裁剪。
17.5 过滤器渲染选项
如您现在可能已经注意到的,尽管 Inkscape 中的过滤器功能强大,但它们有一个显著的缺点:它们很慢。有时,非常慢。虽然程序的未来版本可能在某种程度上解决这个问题(最有可能的是,通过使 Inkscape 能够使用图形卡处理器进行过滤器计算),但您现在可以做一些事情。
首先,请记住,您始终可以切换到轮廓模式(3.11 渲染模式)以加快在文档上工作时渲染的速度。还有无过滤器模式,它与正常模式相同,只是不渲染过滤器;这可能是在过滤器是您速度缓慢的主要来源时最好的选择。
此外,Inkscape 首选项对话框中的过滤器选项卡(图 17-27**)以及 PS/EPS/PDF 导出中的过滤器光栅化始终使用最高的模糊质量,这也是为什么导出通常比在相同分辨率下渲染屏幕上的相同图像要慢的原因。
第二组单选按钮适用于所有过滤器(包括模糊)。它还提供以降低渲染质量为代价来提高渲染速度的选项,但它的速度优势并不显著,因此这里最佳质量选项可能是最佳选择。

图 17-27. Inkscape 首选项对话框中的过滤器选项卡
17.6 将过滤器导出到 PS 和 PDF
自从 0.47 版本起,Inkscape 在导出为 PostScript 和 PDF 格式(虽然它们是矢量格式,但不支持 SVG 的过滤器功能)时不再忽略过滤器。现在,任何应用了过滤器的对象在导出文件中默认将被光栅化(即转换为位图对象),完全保留在 Inkscape 中具有的外观(但可能会增加文件大小)。在导出选项对话框中,您可以指定位图的分辨率,以及关闭光栅化,在这种情况下,对象将保持矢量格式但会失去任何过滤效果。

图 17-28. 导出时指定过滤器处理方式
当通过命令行执行导出操作([C.2 导出](apcs02.html "C.2 导出"))时,相应的选项是--export-dpi用于指定分辨率和--export-ignore-filters用于关闭光栅化。
第十八章:位图
大多数矢量图像开始或结束(有时两者都是)它们的生命周期作为位图(1.1 矢量图形是什么以及为什么它很重要),Inkscape 的 SVG 文档也不例外。许多矢量绘图,无论是艺术性的还是技术性的,都是从照片、扫描或其他位图绘图中发展而来的;在其生命周期的另一端,几乎所有矢量艺术最终都导出为位图格式,以便在无法直接处理矢量的软件中查看。位图是 Inkscape 中的重要对象类型,处理它们的技巧足够灵活,足以用整整一章来介绍。
18.1 导入
如果您有一个位图图像文件,您可以通过使用文件 ▸ 导入命令将其作为位图对象插入到 Inkscape 文档中。Inkscape 可以处理大量位图格式,包括所有主要格式(PNG、JPG、TIFF、GIF 和 BMP)。在导入对话框中,选择所有位图作为文件类型,以便只有支持的位图格式出现在列表中。
此外,您还可以使用文件 ▸ 打开来将任何位图文件作为独立文档显示。在这种情况下,Inkscape 会自动创建一个新的 SVG 文档,其页面大小(3.4.3 页面大小)与位图的像素大小相匹配,并将位图放置在画布上(即文档根目录,而不是任何图层中)。现在您可以向该文档添加矢量对象并将其保存为 SVG(如果您想得到带有结果的位图,您需要将其导出,18.9 位图导出),或者您可以将该文档中的位图对象复制并粘贴到任何其他文档中。
在任何情况下,您现在文档中拥有的都是一个显示位图内容的位图对象。在大多数方面,这是一个常规对象,您可以对其进行变换、复制、克隆、应用滤镜等。在状态栏中,它被描述为带有其像素大小的图像,例如640 × 480。

图 18-1. 文档中的位图对象和选中对象的状态栏显示
位图由像素组成(1.1 矢量图形是什么以及为什么它很重要),Inkscape 并不试图隐藏这一事实。只需足够接近地放大,您就会很容易地看到位图对象中的单独像素作为单色方块。默认情况下,所有位图都以每英寸 90 像素的分辨率导入,这意味着每个像素方块的大小正好是 1×1 px(A.6 坐标和单位)。如果您挤压、倾斜或旋转位图,其像素将相应地变换。
18.2 链接与嵌入的区别
默认情况下,你导入到 Inkscape 中的任何位图都链接到文档。这意味着位图的实际内容是从原始位图文件中获取的;SVG 文档中包含的只是对该文件的引用——包括路径的文件名。这样,SVG 文件的大小保持最小,多个 SVG 文档可以重用相同的位图文件。链接的位图对象的任务栏描述报告了其文件名(图 18-1)。
这也意味着,你对该链接位图文件进行的任何更改(例如,颜色校正或裁剪)都将立即反映在 Inkscape 文档中。此外,你可以通过在 Inkscape 内部右键单击位图对象并选择外部编辑来在链接的图片上运行外部编辑器(例如 GIMP 或 Photoshop)。在Inkscape 首选项的位图页面(3.1.1 Inkscape 首选项)中,你可以禁用更改位图的自动重新加载,以及选择你想要使用的哪个外部编辑器。
链接位图的最大缺点是破坏这个链接是多么容易。如果位图文件被删除或移动到相对于 SVG 文档的不同位置,结果将不会很美观,正如图 18-2 所示。

图 18-2. 当 Inkscape 找不到链接的位图文件时,它显示的内容。
这是在你将你的艺术作品发送给某人但忘记包括链接的图片时常见的问题。
SVG
对于 Inkscape 来说,重要的是位图的相对位置,因为在svg:image对象的xlink:href属性中,它存储了从 SVG 文档位置到图片文件的相对路径。例如,如果位图位于你的 SVG 文档所在的文件夹的images子文件夹中,你可以将这个文件夹及其images子文件夹移动到电脑上的任何位置而不会出现问题。
此外,Inkscape 在一定程度上保护你免受这种情况的影响:你将 SVG 文档移动到同一台电脑上的另一个位置,但留下了链接的图片。Inkscape 还存储了图片的绝对路径在sodipodi:absref属性中,并在xlink:href中的相对链接失败时尝试使用它。然而,如果你将 SVG 移动到没有相关图片的不同电脑上,这并不会有所帮助。
有一种方法可以一次性防止这些链接问题,那就是将图像嵌入到你的 SVG 文档中。嵌入的图像存储在 SVG 文件内部,永远不会丢失。然而,这会增加 SVG 文件的文件大小(大约是位图文件大小的 1.4 倍,这可能是显著的);此外,嵌入的图像不能在外部位图编辑器中编辑。
要将一个或多个图像嵌入到文档中,请使用Extensions ▸ Images ▸ Embed Images。你可以选择仅嵌入选定的位图对象(保留其他所有对象不变)或嵌入文档中的所有位图对象:

图 18-3. Extensions ▸ Images ▸ Embed Images 将所有或仅选定的图像嵌入到 SVG 中。
嵌入的图像在状态栏中描述为,例如,Image 64 × 64: embedded。使用Extensions ▸ Images ▸ Extract Image,你可以反转位图的嵌入——也就是说,将嵌入的图像提取到单独的链接文件中;你需要指定保存提取文件的路径。
18.3 位图作为图案
通常,你首先想要对导入的位图进行的是裁剪,移除不必要的边框,只留下图像的一部分。在 Inkscape 中,有几种方法可以实现这一点。
如果你希望位图保持矩形形状,并且只想去除一些边框,通过按
可以方便地将它转换为*图案(10.8 图案)。这不会改变可见的显示,但将矩形位图(必须未旋转或倾斜才能正确工作)转换为具有图案填充的矩形对象(11.2 矩形**)。
现在,你可以使用其两个角手柄来调整矩形的大小,例如使用节点工具或矩形工具(11.2.1 尺寸调整)。这不会影响填充,这意味着你可以通过移动矩形手柄向内来裁剪它。同时,你还可以使用图案的三个手柄来移动、缩放和旋转图案,如10.8.2 编辑图案中所述。(最初,图案手柄与矩形手柄重合;将左上角的 X 形手柄拖动以分离它们。)

图 18-4. 矩形中的位图作为图案
在将您的位图转换为图案矩形后,您可以将矩形转换为任何其他路径——例如,通过将其转换为路径(
)并编辑结果,或者通过将矩形与路径相交(12.2 逻辑运算)。这种方法很方便,因为您可以同时编辑形状/路径及其位图填充。默认情况下,变换会影响形状/路径及其图案填充;有关如何更改此设置的详细信息,请参阅6.10 受哪些变换影响。
18.4 裁剪和遮罩
另一种裁剪图像的方法是使用裁剪或遮罩。尽管在这里,这些技术是通过位图对象来展示的,但实际上您可以对任何类型的对象进行裁剪或遮罩,包括组。
Inkscape 允许任何对象通过路径进行裁剪,这样只有路径内部的对象部分才会可见。从位图对象开始,使用任何方便的工具(例如,书法笔或铅笔)在其上绘制裁剪路径或形状。然后,选择位图和路径,并选择对象 ▸ 裁剪 ▸ 设置。裁剪路径消失(现在它位于defs中,A.4 Defs, View, and Metadata),但底部对象现在被它裁剪。要在不取消裁剪的情况下编辑裁剪路径,请点击节点工具控制栏中的相应按钮,如图图 18-5 所示。

图 18-5. 应用裁剪到位图对象
在任何时候,您都可以通过对象 ▸ 裁剪 ▸ 释放来移除裁剪,并将对象及其裁剪路径再次作为两个单独的对象获得。
注意
裁剪路径不一定是单个路径;它也可以是一组路径。
遮罩与裁剪非常相似:您选择对象和遮罩,然后选择对象 ▸ 遮罩 ▸ 设置来应用遮罩,或者选择对象 ▸ 遮罩 ▸ 释放来移除遮罩。裁剪和遮罩之间的主要区别在于,裁剪将对象限制在裁剪路径的内部,忽略任何装饰,如填充颜色、描边样式、渐变或模糊。裁剪是二进制的;在任何时刻,裁剪的对象要么可见,要么不可见。然而,遮罩是渐变的——它可以使对象部分透明。
要记住的规则是:在遮罩中,黑色使被遮罩的对象透明(不可见)和白色使它们不透明(可见)。更重要的是,遮罩中的“无颜色”填充或完全透明被认为是“透明黑色”——也就是说,没有被遮罩覆盖的区域或落在遮罩缝隙或孔中的区域消失。要使对象的一部分可见,该部分的遮罩必须是非黑色的;纯不透明白色在遮罩对象中给出 100%的不透明度,而任何更暗或更透明的颜色都会产生低于 100%的不透明度。
显然,当使用渐变或模糊时,遮罩最有用。例如,你可以轻松地将照片条带与背景融合(使用线性渐变遮罩)或使照片剪贴的不规则边缘羽化(使用模糊遮罩):

图 18-6. 对位图对象应用遮罩
就像剪裁路径一样,遮罩可以是一组对象而不是单个对象。节点工具还有一个按钮用于编辑所选对象的遮罩。不幸的是,此按钮仅允许你节点编辑遮罩的单一路径或形状——你不能改变其颜色、渐变或模糊;为此,你需要释放遮罩,在更改后再次设置。
18.5 修图和修补
在 Inkscape 中使用矢量工具,可以完全实现简单的位图编辑任务,例如去除缺陷或抑制不必要的细节,无需求助于外部位图编辑器。虽然这种方法有限,但它往往出人意料地有用且快速。
假设我们需要从照片中移除一个小瑕疵。首先,放大照片并在其上方绘制一个书法笔触;然后,切换到滴管工具并从照片附近的颜色中选取颜色。在某些情况下,这可能是你真正需要的——即使这样的原始修补也可能足够融合,以至于在缩小视图时不会引起注意。然而,修补的边缘在至少一个侧面可能会非常明显。在这种情况下,渐变可能会有帮助;切换到渐变工具(10.1 渐变工具),绘制一个线性或椭圆形渐变,尝试匹配背景中颜色变化的主要方向,并再次使用滴管工具(8.6 滴管工具)来选取渐变停止点的颜色。如果渐变未能使修补完全融入背景,可以尝试稍微模糊一下:

图 18-7. 用矢量修补路径覆盖脸颊上的小瑕疵,通过渐变和模糊使其“隐形”
完成修图后,别忘了将位图对象及其所有矢量修补组合在一起,这样组合就可以作为一个单独的对象移动。
18.6 位图滤镜
一些预设的过滤器(17.3 预设过滤器),收集在过滤器 ▸ 图像效果中,是专门为位图设计的(图 17-12)。当然,你可以将这些过滤器应用于任何其他对象或将任何其他过滤器应用于位图;此子菜单仅收集那些主要适用于位图的过滤器,因为它们作用于对象的内部颜色或纹理,而不是其整体形状。
18.7 位图效果
到目前为止描述的所有技术,虽然对于处理位图是必不可少的,但同样适用于任何类型的对象。然而,Inkscape 还有一系列“真正”的位图扩展效果,收集在扩展 ▸ 栅格子菜单中。(有关使用扩展效果的通用提示,请参阅13.3 路径扩展。)
与我们刚才看到的 SVG 过滤器不同,所有这些效果都会永久性地更改位图;它们可以被撤销——但例如,在应用后你不能重新调整这种效果的相关参数。而且与过滤器不同,这些效果只能作用于位图对象;例如,你不能将位图效果应用于位图的副本。如果位图是链接的,这些效果将嵌入它并在嵌入的副本上工作,而不是在外部链接的原始位图上。
有超过 30 种栅格效果;这里只列出了最有用(且不通过过滤器容易实现)的那些:

图 18-8. 从扩展 ▸ 栅格中扩展效果的示例
-
添加噪声为你提供了在图像上叠加各种类型噪声的选择;大多数类型看起来或多或少像散落的沙子。
-
通道从位图中提取一个通道(R/G/B、C/M/Y/K、不透明度或哑光中的一个)。
-
炭笔将你的图像变成炭笔画的模仿。增加半径会使笔触更粗糙,而提高Sigma会使整体绘制更暗。
-
对比度增加对比度(明暗之间的差异)。你可以多次应用它以获得更明显的效果。
-
循环色图循环位图的色图。
-
去斑、增强和减少噪声实现了各种噪声减少算法。
-
均衡将直方图均衡应用于图像。
-
级别将比黑点暗的像素变黑,将比白点亮的像素变白,并将处于此范围内的像素缩放到全色范围。伽玛校正指定额外的亮度校正(1 表示无变化)。
-
级别(带通道)与级别相同,但仅适用于单个通道。
-
中值用其圆形邻域的中值颜色绘制每个像素,产生类似于模糊的效果。
-
HSB 调整调整色调(在-360 到 360 的范围内),饱和度(-200 到 200),和亮度(-200 到 200)。
-
归一化通过将像素的颜色范围扩展到完整的颜色范围(例如,如果图像没有红色,所有颜色都会在红色的方向上拉伸以补偿这一点)来增加对比度。
-
重采样可能是所有图像效果中最实用的:它允许你改变位图的像素大小而不进行缩放。向上重采样(即,使位图大于其当前像素大小)不会改变图像的外观,但如果你计划应用其他效果并希望它以更高分辨率工作,这可能是有用的。向下重采样(到小于当前大小)会使图像失去细节,而不会改变文档中的尺寸;这是减少嵌入位图的 SVG 文档文件大小的好方法。
-
抖动在位图中随机散布像素,数量指定散布的半径。
-
漩涡将位图在其中心以螺旋状旋转。
-
锐化蒙版使用流行的“锐化蒙版”算法来锐化图像。
-
波浪沿给定振幅和波长的水平正弦波扭曲图像。
18.8 追踪
对于矢量编辑器来说,最重要的位图相关功能之一是将位图对象转换为矢量(追踪)以及相反的(位图导出)。Inkscape 提供了丰富的强大工具来进行这些转换,本章的其余部分将详细介绍这些工具。
18.8.1 手动追踪
从位图图像创建矢量艺术的最直接方法不涉及任何除了我们已知的工具以外的工具。只需切换到钢笔工具(14.1 钢笔工具),放大你的位图,然后在你想要转换为矢量路径的区域周围或沿线进行一系列点击,然后双击或按
完成路径。在尖锐的角落使用点击并释放来创建尖点节点;对于平滑的曲线边缘,在关键节点使用一系列点击并拖动:

图 18-9. 位图手动追踪
你可以根据你想要追踪特定区域的精确程度来调整点击的密度。如果你想形状更加平滑,切换到斯皮罗模式(13.1.7 斯皮罗样条);在此模式下,点击后拖动的方向无关紧要,只要你在某个地方稍微拖动一下以创建平滑节点即可。如果你正在追踪没有任何曲线的多边形,使用直线模式会更方便,这样意外的拖动就不会创建不想要的平滑节点。
虽然这种技术在最初可能看起来很耗时,但一旦您掌握了技巧,您将能够非常快速地跟踪复杂的艺术作品。像任何手动技术一样,它的主要优势是完全的创意控制——您决定跟踪哪些部分、忽略哪些部分,如何简化复杂形状,在哪里偏离位图蓝图,以及在哪里放置每个节点。根据您的技能,结果可能会比自动跟踪或完全手动绘图更令人满意。
18.8.2 跟踪位图对话框
Inkscape 的自动位图跟踪工具非常强大;基于独立的 Potrace 开源跟踪器(potrace.sourceforge.net),它被认为是现代矢量编辑器中同类工具中最好的之一。使用它,您可以跟踪从只需要几个节点的简单黑白标志到产生数十个彩色路径和数千个节点的复杂照片。

图 18-10. 跟踪位图对话框
跟踪位图对话框(
)有两个主要区域:左侧的选项面板和右侧的预览面板。请注意,然而,预览面板不会显示您正在跟踪的矢量路径(这可能很耗时来创建);相反,您看到的是根据选项面板中指定的所有颜色减少和过滤步骤进行跟踪的位图。要更新选项更改后的预览,请点击更新。
要执行所选位图对象的实际跟踪,请点击确定。对于大位图,这可能很慢;请查看状态栏以获取进度消息。您可以在任何时候通过点击停止按钮来中断跟踪。
对话框的模式选项卡选择跟踪工具的主要操作模式。可用的模式分为两组:单扫描模式创建单个路径,而多扫描模式创建多个路径(分组在一起)。
18.8.2.1 亮度截止
亮度截止是跟踪路径最简单也是最常见的方法:生成的路径覆盖了所有比您设置的阈值更暗的部分。这个跟踪路径,虽然是一个单一的对象,但可以由多个非重叠的子路径组成(12.1.1 子路径)。阈值是以图像整个亮度范围的一部分来设置的;例如,当设置为 0.6 时,跟踪路径覆盖了图像最暗的 60%的所有区域。如果您点击反转,阈值的含义将被反转(即,路径将覆盖图像最亮的 40%)。

图 18-11. 不同阈值值的亮度截止跟踪
通常,这是追踪简单单色形状(如标志、文本、剪影等)的最佳追踪模式。
18.8.2.2 追踪质量
即使您正在追踪的位图是矢量路径的版本,追踪也不会精确地重现原始路径。将矢量渲染为位图总会造成一些信息丢失,Inkscape 的追踪器无法通过猜测来恢复这些丢失的信息。尽管它通常做得相当不错,但仍然会有一些情况让您对其未能识别您在位图中容易“看到”的一些特征(弧线、直线、角落)感到失望。这在追踪低分辨率位图或包含文本的位图时尤其明显。

图 18-12. 位图追踪的一些常见质量问题
在这种情况下,最好的建议可能是获取尽可能高的分辨率位图。从一些关键特征跨越几个像素的位图中获取合理的追踪几乎是不可能的;追踪图像的高分辨率版本通常会有很大的不同。此外,您可以尝试调整阈值并实验对话框的选项页面(它适用于所有模式,无论是单扫描还是多扫描)的内容:
-
抑制杂点选项移除任何小于指定像素数的颜色块。这可以抑制在追踪脏或“抖动”位图时创建小的多余子路径。
-
增加平滑角落参数会使追踪算法不太倾向于识别图像中的尖锐角落。当您从高度像素化、低分辨率的位图追踪自然平滑的形状,且不希望意外的像素尖角成为追踪路径中的尖锐角落时,这可能很有用。相反,当您正在追踪没有曲线的几何形状时,降低此参数是合适的;当平滑角落为零时,生成的路径几乎完全由直线段组成,它们之间有尖角节点。
-
优化路径参数试图减少追踪路径中的节点数,就像简化命令所做的那样(12.3 简化)。提高此值会减少您获得的节点数,但也会增加引入可见扭曲或丢失形状的一些重要细节的机会。
18.8.2.3 其他单扫描模式
边缘检测模式在追踪位图之前将其应用于边缘检测过滤器。因此,追踪路径将包含窄条,这些窄条遵循源位图中的颜色边界。阈值越低,检测和追踪到的边缘就越多。
颜色量化模式首先将图像量化(分割)为给定数量的区域(颜色),每个区域都有其主导颜色,就像使用位图编辑器将全色图像减少到固定调色板时一样。然后它追踪每个这样的区域,这导致颜色渐变呈现出剥离的外观。

图 18-13. 边缘检测和颜色量化模式
18.8.2.4 多扫描模式
就像我们刚刚看到的颜色量化模式一样,每种多扫描模式首先将图像量化为给定数量的区域(由扫描数指定)。然后它分别追踪每个区域,为追踪路径分配适当的颜色或灰度级别,并将所有这些路径组合在一起。在足够多的量化步骤下,结果可能看起来非常接近原始位图,忠实地再现其颜色渐变、模糊、自然纹理等。
三种多扫描模式在图像量化方式上有所不同。亮度级别选项是灰度图像的最佳选择;它忽略任何色调或饱和度差异,并根据亮度将像素分组到区域中(图 18-14
图 18-14. 多扫描:10 个亮度级别
平滑选项在量化图像之前应用一定量的模糊;这在复杂摄影图像中可能会产生更好的结果。堆叠扫描选项最好保持开启状态;它确保每个区域的路径不仅覆盖该区域,还覆盖 z 顺序中所有位于其下方的区域,这意味着扫描之间不会有间隙:

图 18-15. 扫描堆叠与相邻
移除背景选项简单地从组中移除最底层的扫描路径,这在您正在追踪一个在单色背景上的照片,并且希望结果只包含对象本身,而不包含背景时非常有用。
18.9 位图导出
在位图主导的世界里,没有良好光栅化和位图导出功能的矢量编辑器是无用的。Inkscape 的位图导出功能方便,可以通过多种方式自动化。然而,Inkscape 缺乏导出预览,并且只支持一种位图格式:PNG。此外,你只能创建每个通道 8 位(没有索引颜色,没有每个通道 16 位),并且无法抑制抗锯齿。
不支持 PNG 之外的位图格式并不像听起来那么糟糕。PNG 格式忠实地保留了 Inkscape 能够达到的最大渲染质量,包括 alpha 透明度、抗锯齿、滤镜等。从 PNG 文件中,你可以轻松地使用位图编辑器或任何图像转换工具(如 ImageMagick)创建任何其他格式(如 JPG 或 TIFF)(你可以在 imagemagick.org 下载它)。在此转换过程中,你可以以各种方式优化你的图像(例如,最小化文件大小或调色板)。
注意
如果你认为你的 PNG 导出丢失了原始 SVG 的透明度,最可能的问题来源不是 Inkscape,而是你用来检查 PNG 的图像文件查看器。并非所有图像查看器都能处理 PNG 中的 alpha 透明度;一个能保证正确显示你的 PNG 的程序是 Firefox 浏览器。
18.9.1 导出位图对话框
使用 导出位图 对话框 (
),你可以将你的绘图或其任何部分导出为 PNG 文件,任何分辨率。该对话框由三个主要区域组成,其中你配置以下内容:
-
你想要导出的画布区域
-
位图的像素大小
-
导出文件的文件名

图 18-16. 导出位图对话框
对于 导出区域,你可以选择你的 SVG 文档的 页面(页面边缘之外的内容不会被导出),绘图 的边界框(这可以比页面小或大;页面矩形在导出的位图中在任何方式下都是不可见的),或者 选择 的边界框(再次,它可以在页面矩形内部或外部——这并不重要)。这些选项对应于对话框顶部的第一个三个切换按钮。
或者,你可以点击 自定义 切换按钮,并输入导出区域左上角坐标(x0,y0)、右下角坐标(x1,y1)或宽度和高度的值。你还可以选择这些值的测量单位(默认为 px,A.6 坐标和单位)。
导出位图对话框不是模态的——也就是说,当它打开时,您可以像平时一样继续在画布上工作。除非您选择自定义,否则对话框会根据画布上的选择变化而切换到选择模式,并更新坐标以匹配新选择的边界框。如果没有选择任何内容并且您不在自定义模式下,对话框默认为绘图模式。
对于位图大小,您可以输入宽度和高度,以像素为单位,或者调整分辨率值(dpi,代表每英寸点数——即像素),默认分辨率为 90 dpi,使得一个 SVG px 单位正好对应渲染位图的像素。水平和垂直的 dpi 值不能不同;更改三个可编辑值中的任何一个(宽度、高度、dpi)都会使其他两个值相应改变。
注意
如果您的绘图包含一些px大小的对象(例如宽度为整数的px的线条)并且您希望它们精确地导出到位图的像素中,选择 90 dpi 分辨率可能不足以做到这一点。例如,SVG 中的 1×1 px 正方形可能会落在导出位图中像素之间的边界上,这最终会导致“扩散”到四个相邻像素而不是一个。防止这种错位并确保您的导出尽可能清晰的最简单方法是使用网格(7.2 网格)。将对象吸附到默认的 1 px 大小的网格上,并确保在px测量时导出区域具有整数x0和y0坐标——也就是说,它本身对齐到px网格。之后,在 90 dpi 下导出将为您提供一张完美清晰的图像。
对于文件名,您可以输入文件的完整路径(将自动添加.png扩展名)或点击浏览按钮访问您的文件系统并选择一个文件夹和一个文件。
18.9.1.1 导出提示
当导出单个选定的对象时,导出文件名和分辨率会被记住并存储在 SVG 文档中(因此您可能需要在导出后保存它),并在您再次选择此对象进行导出时恢复到导出位图对话框中。这些导出提示是使用 Inkscape 导出多个对象到多个位图文件时节省时间的一大方法——例如,网页图形的切片。正如您在打开导出位图对话框时选择各种对象一样,您可以在文件名字段中看到它们保存的导出文件名弹出。出于同样的原因——为了更容易逐个导出多个对象——对话框在您点击导出按钮后仍然保持打开状态。
如果你选择所有你想要导出的对象,每个对象到一个单独的文件,并勾选批量导出所有选定的对象复选框,你可以进一步加快这个过程。现在,点击导出将为每个选定的对象创建一个位图文件。如果一个对象之前已经被导出——也就是说,已经保存了文件名和分辨率提示——这些值将被使用;否则,将从对象的 ID(例如,text2402.png,见A.9 链接)构造位图文件的名称,并将文件放置在保存你的 SVG 文档的最后目录中。
默认情况下,即使你正在导出选择项,实际上你导出的是一个区域——选择项的边界框,它可能包含许多其他对象,所有这些对象都将可见。勾选隐藏除所选之外的所有内容复选框可以确保导出的位图只包含导出的对象,而所有其他对象,即使它们与导出区域重叠,也不会被渲染。
18.9.2 通过命令行导出
当你通过使用各种开关和参数从命令行运行 Inkscape 时,导出位图对话框的所有功能也都可用。这样,Inkscape 可以作为无 GUI 的实用工具从脚本或程序中用于自动化各种 SVG 渲染任务。例如,这是如何以 600 dpi 导出id="text2402"的对象的:
$ inkscape document.svg --export-png=img/text.png --export-id=text2402 \
--export-dpi=600
对于 Inkscape 的完整命令行开关列表,请参阅附录 C。
18.9.3 图标预览
虽然目前导出位图对话框中没有预览窗格,但如果你使用 Inkscape 创建图标,一种预览你的工作在不同图标尺寸上的渲染效果的方法是通过图标预览对话框,你可以从视图菜单中调用它:

图 18-17. 图标预览对话框
此对话框包含你的文档以几种典型的图标尺寸进行光栅化的预览,从 16x16 像素到 128x128 像素;在对话框的左侧,这些渲染之一会额外显示并放大,以便你可以看到你的矢量对象如何转换为实际像素。点击选择切换按钮可以在整个文档的预览和当前选择之间切换。刷新按钮更新预览(目前还没有自动更新预览的功能)。
18.9.4 制作位图副本
你可以立即将你导出的位图文件导入文档中,以查看光栅化是如何工作的。然而,如果你只需要在文档中使用该位图,而不是作为单独的文件,你可以使用 Inkscape 的快捷方式:编辑 ▸ 制作位图副本命令。
这个命令导出选定的对象,并立即将生成的位图导入文档中,将其叠加在选区上方。新的位图对象没有嵌入(它被放置在文档的最后保存目录中);使用嵌入效果(18.2 链接与嵌入)来嵌入它。导出的分辨率可以在 Inkscape 预设 的 位图 页上设置;默认值为 90 dpi,对于这个值,命令还将导出区域吸附到 1 px 网格上,确保创建的位图像素与 px 方格的边界对齐。

图 18-18. 路径的 90-dpi 位图副本,对齐到网格
这个命令可以用来快速预览你的艺术作品如何光栅化(之后,位图对象可以被删除)。当你有一些渲染速度非常慢的过滤器(17.5 过滤器渲染选项),但又不想在无过滤器或轮廓模式下工作;在这种情况下,只需创建一个过滤对象的位图副本,然后删除或隐藏渲染速度慢的原始对象。此外,你可以创建一个低分辨率位图副本来追踪对象,以实现其形状的特征性扭曲,这可能具有艺术价值。
18.10 色彩管理
色彩管理工具的目标是确保你的艺术作品中的颜色在不同输出设备之间正确转换,最常见的是从屏幕到打印。不同设备可以重现的颜色范围不同,一些颜色失真是不可避免的。色彩管理允许你预览、控制和因此最小化这些失真。
在 Inkscape 中,色彩管理是一个正在发展的领域,目前还处于相当原始的状态。你可以使用屏幕校样来预览输出颜色;然而,仅使用 Inkscape,你无法正确地为打印准备文件(即,分离颜色并保存带有嵌入色彩配置文件的文件)。然而,在大多数情况下,你可以通过使用一些技巧和采用一些额外的软件,如本节所述,来获得所需的结果。
然而,在深入之前,考虑一下你是否真的需要色彩管理。如果你打算在台式彩色打印机上打印你的艺术作品,那么其质量可能根本不足以让色彩管理产生显著差异。典型的台式打印机将接受并打印与屏幕上显示相同的 RGB 数据,执行自己的颜色转换,而不打扰用户。
当您打算使用专业打印机打印文档时,例如通过将它们发送到打印服务提供商,就需要进行颜色管理。即使在这种情况下,一些提供商如果被要求,也会为您管理文档中的颜色。如果您对这一过程有足够的控制(例如,可以审查打印校样),这通常是最佳选择,因为打印服务人员知道什么最适合他们的设备。
18.10.1 ICC 颜色配置文件
ICC 颜色配置文件是一个完全描述输出设备颜色能力的文件。如果您想为在特定设备上输出文档做准备,您必须首先获取与该设备及输出介质(例如,用于打印的纸张类型)完全对应的 ICC 配置文件。有时,您可以在互联网上找到合适的配置文件(例如,在打印机硬件制造商的网站上);有时,您可以从您将要使用的打印服务提供商那里请求它们。您可以从 Adobe 获取一个有用的通用配置文件包,网址为www.adobe.com/downloads。
一旦您获得了目标配置文件,将其放入 Linux 上的~/.local/share/color/icc或 Windows 文件夹中的system32\spool\drivers\color。
18.10.2 屏幕校样
由于典型打印机的颜色范围比计算机显示器的颜色范围窄,Inkscape 可以通过在您的显示器上模拟打印机颜色来在屏幕上预览打印输出。为此,您需要有两个 ICC 颜色配置文件:一个用于您将要使用的打印机,另一个用于您的屏幕。
理想情况下,您应该使用一种称为色度计的特殊硬件设备来校准您的显示器;这种校准会创建一个定制的 ICC 配置文件。如果您无法进行校准,可以使用一个通用的 RGB 配置文件,例如上面提到的 Adobe 的配置文件包中的“Adobe RGB”,除非您的质量要求真正严格。
在Inkscape 首选项中,转到颜色管理选项卡。在显示调整部分选择显示配置文件。然后,在校样部分,勾选在屏幕上模拟输出并选择目标设备的设备配置文件(即打印机)。
对于屏幕和目标设备配置文件,您还可以选择设备渲染意图。默认的感知在大多数情况下是最好的选择;如果您希望输出看起来尽可能色彩丰富(例如,在打印简单的商业图形时),尝试饱和度。
如果屏幕颜色“超出色域”——也就是说,根本无法在输出设备上渲染——可以通过将其转换为特别指定的颜色来立即使其可见。例如,如果你的设计中没有红色,请检查标记超出色域颜色,并选择红色作为超出色域警告颜色。然后,无论你在绘图中发现红色,你都知道你需要更改该对象的实际颜色(当然,它在状态栏或填充和描边对话框中显示正确,红色标记仅在绘图上),如果你想让它打印而不出现明显的扭曲。
18.10.3 分色和嵌入
屏幕校对很有帮助,但有时可能不够——你可能需要生成一个已经转换为目标色彩系统的文件。这样的文件通常被称为分色文件,因为它们包含了对应输出设备油墨的单独色彩通道(通常是 CMYK,8.2.2 CMYK)。这样的文件也可能嵌入目标色彩配置文件。最常用的格式是 PDF(矢量)和 TIFF(位图);两者都可以包含分色数据并嵌入 ICC 配置文件。
尽管它可以导出 PDF 和渲染位图,但截至版本 0.47,Inkscape 无法进行分色或配置文件嵌入。你需要其他软件来完成这项工作,例如 Adobe Photoshop(用于 TIFF)或 Illustrator(用于 PDF);两者都可以直接导入 Inkscape 的 SVG 格式。你也可以使用开源软件;Scribus 页面布局程序(scribus.net)可以导入 SVG 并创建分色 PDF,而 GIMP 的 Separate+插件(registry.gimp.org/node/471)可以将 Inkscape 导出的 PNG 位图转换为带有屏幕校对的分色 TIFF,以实现完全控制。
第十九章。教程:设计名片
即使在这个所谓的“电子”时代,名片(或拜访卡、或地址卡——如果你不想听起来太商业化)仍然很受欢迎。这张小纸片是你或你组织的个性的反映,是你认为对你最重要的内容的简要展示。因此,不出所料,这件小办公用品的设计方面非常重要。就像三行俳句一样,你有一个非常有限的空间来做出清晰、原创和难忘的陈述。
由于同样的原因——简洁、空间有限以及设计需要突出——名片是测试这种基本设计师工具(矢量编辑器)的完美项目。Inkscape 的工具集使其成为这项工作的优秀工具;它唯一的真正弱点是创建带有设备颜色的打印输出文件的相对难度。
本教程的步骤展示了两个相当不同的示例设计,但我并不是邀请你完全按照它们来做(除非你只是想学习技术)。如果你计划设计真正的名片,尝试找到并分析比这两个更多的例子,并使用 Inkscape 来创造出结合了你所看到的最佳功能和完全原创的东西。创造力不能被教授,但可以被激发。我的例子都在艺术方面;也许你心中的名片会更传统——但总体方法将是相同的。
19.1 设计 1:模板和文本
第一步很简单。通过从 文件 ▸ 新建 子菜单中选择名为 business_card_90x50mm 的模板来创建一个新文档。(如果你需要不同的大小,你可以在 文档属性 中随时更改它,
。)然后切换到文本工具,为你在卡片上要显示的所有文本行创建文本对象——姓名、职位、地址、电话等。将它们都做成独立对象(分别点击并输入每个对象),因为你将需要移动它们很多次,尝试不同的布局。如果你将在卡片上显示标志,导入标志文件(附录 B)以将其转换为路径。

图 19-1. 准备工作空间和添加文本对象
下一步是为你的文本对象选择字体。你喜欢的字体将大大有助于你喜欢的设计。如果你对设计很认真,你很可能有一个你最喜欢的字体的大库;否则,操作系统通常会附带一些基本(但很好)的字体。许多高质量且免费(或价格低廉)的字体可以在网上找到。
我一直很喜欢名为 Gentium 的免费字体;^([7]) 它的主要特点是良好的 Unicode 支持,但我还发现它从美学上也很吸引人,所以我决定用它来设计这个。在将字体分配给所有文本字符串后,通过在选择器中调整大小(图 19-2**)。支持的字体格式包括 TrueType、Type 1 和 OpenType。

图 19-2. 字体和大小
^([7]) 可在 sil.org/~gaultney/gentium 获取
19.2 设计 1:布局
为单个人设计名片(而不是创建一个用于具有不同名称的多个名片的模板)有一个重要的优点:您可以精确地定位和排列您的文本对象,而无需为可变长度的名称和地址留下额外空间。在这种情况下,我能够将所有地址部分紧密地推到名称旁边,创建了一个由其对齐方式紧密连接的不对称构图(地址与最后一个名字的开始对齐,电子邮件与名字的顶部对齐等)。

图 19-3. 布局文本
这已经看起来很有趣——但可能有点太矩形了。一个明显的尝试方法是选择所有 (
) 并稍微旋转一下(按
一次)。好多了!现在设计有了结构主义的风格——20 世纪 20 年代一个短暂但影响深远的运动,其支持者喜欢大胆的对比和倾斜的文本(尽管他们可能不会批准 Gentium 字体)。让我们发展这种风格;在边缘向构图插入三个黑色角落,并在构图的中心放置一个大红色圆圈,如图 图 19-4,
来更改字母间距,以及
-箭头来更改文本光标处的字距(15.3.3 字距调整)。一般来说,大文本对象使用更紧密的字母间距看起来更好,而小字体需要增加字母间距以提高可读性。

图 19-4. 旋转和添加形状
19.3 设计 2:图形
我们第一次名片尝试主要受到文本行布局的启发,图形元素只是作为支持和加强该布局的辅助。我们能否反过来,从一个图形元素开始,围绕它构建设计?
当然,如果你在做公司的名片,显然的起点是公司的标志。如果你只是为自己设计一张卡片,并希望它更加个性化,你可以尝试追踪你导入的照片(18.8 追踪)。最后,你也可以使用一些剪贴画,例如来自 http://openclipart.org (1.3 Inkscape 艺术来源),那里有许多装饰和抽象作品,可能成为你卡片的中心。
然而,对于我的第二个演示名片,我选择了另一种方法:艺术首字母。我切换到书法笔,将角度设置为 90 度,将固定设置为 100,并画了几对交织的字母。在我最终将字母形状调整得差不多之后,结果略显有趣,但远非激动人心。然后我尝试通过创建路径对象的联合,然后多次简化、嵌入和外凸来改进它:

图 19-5. 创建首字母
现在字母看起来更自然了——但它们还可以变得更加有趣。现代设计的通用规则似乎是这样的:不要太过整洁!如果你能以创造性的方式弄脏、扭曲或损坏你的艺术作品,那就去做吧。所以我选择了一支稍微窄一点的笔尖,将震颤设置为 100,并用我的平板电脑笔在字母周围疯狂地舞动(尽管这也可以用鼠标来完成)。起初,结果可能看起来相当不吸引人,但这是因为我忘记了对它进行通常的简化/嵌入/外凸魔法:

图 19-6. 创造性地损坏字母形状
19.4 设计 2:布局
自然地,这样一件扭曲艺术作品值得放在卡片的中心位置,其余的东西对称地放置在其周围。我使用了一种普通、斜体、非常轻的无衬线字体(Helvetica Condensed Light),它不会分散中心艺术作品的注意力。水平布局可能在这里不是最好的——卡片看起来有点拥挤。将所有东西旋转到侧面(按
)为艺术作品提供了充足的空间,并允许文本漂浮到边缘,这样就不会干扰:

图 19-7. 在首字母周围布局卡片
19.5 设计 2:纹理和颜色
这里开始出现了一些东西,但它还远未准备好。卡片看起来太空,太平,对其中心不规则的墨迹太敌对。我们能做些什么吗?让我们尝试添加一些背景渐变。正如在10.7 渐变技巧和示例中解释的那样,从某种颜色(例如蓝色)的不透明度 1 到不透明度 0 的默认渐变看起来粗糙且不自然,即使它使用非常浅的颜色,其边界仍然清晰可见。为了改善白色背景上渐变的外观,将渐变的透明端涂成白色,而不是与另一端相同的颜色。
在这里,我在卡片的边缘添加了四个带有不规则斜向蓝绿色的渐变矩形,以实现自然卷曲、柔和融合的不对称外观。虚线是带有渐变的四个矩形的边界框,渐变线显示了每个渐变的范围和方向。我将首字母涂成深蓝色,并为字母添加了一个模糊的、50%不透明的阴影(滤镜 ▸ 阴影和发光 ▸ 阴影)。

图 19-8. 添加渐变和阴影
能否进一步改进?给卡片添加纹理的一个好方法是通过叠加半透明的线条网格。在整个卡片上画一个矩形,打开填充和描边(
),将填充切换到图案,并选择条纹 1:1 白色库存图案。现在,使用节点工具中的图案调整手柄(10.8.1 创建图案),根据喜好旋转条纹并缩小它们。最后,将矩形移动到渐变和首字母上方,但在文本的 z 轴顺序之下,并将其不透明度降低到 20%。

图 19-9. 添加条纹纹理:卡片已准备就绪。
19.6 导出和打印
我们现在有两个相当不错的名片设计——但我们实际上如何将它们打印出来?最佳的行动方案取决于设计的性质,你必须了解 Inkscape 的当前限制和各种输出格式的功能(附录 B),以确定最佳方法。
19.6.1 PostScript
第一个(“建构主义”)的设计没有任何透明度或渐变;它是一系列完全不透明的形状。这意味着它可以无损地保存为 PostScript 或 EPS,大多数印刷服务提供商都会接受。为了安全起见,使用 Ghostscript 预览你的 PS 或 EPS 输出文件^([8])。或者,你可以通过文件 ▸ 打印命令直接将此类文件打印到本地打印机设备,该命令将文档的 PostScript 版本发送到打印机。
19.6.2 PDF
对于更复杂的设计,最佳输出格式是 PDF(B.3 PDF (导入/导出)"))。如今,几乎所有印刷服务提供商都接受 PDF,通常优先于 PostScript。PDF 是一种更强大的格式,并且 Inkscape 对其支持更好;使用它,你不必担心渐变或透明度。如果你在 PDF 导出选项对话框中启用此选项,带有阴影的初始字母等过滤对象在导出为 PDF 时将自动转换为位图。
通常,为打印准备你的设计最安全的策略是将必须的矢量元素与可以渲染为位图的元素分开。例如,文本(尤其是使用小号字体)、标志和清晰的背景形状必须保持矢量;避免对它们使用过滤器,但将它们分离到前景层,并将所有文本转换为路径,这样它们就不依赖于字体。其他任何东西(带有或不带有透明度的背景形状、过滤对象、导入的位图等)都可以通过制作位图副本:在Inkscape 首选项(位图页面)中设置所需的分辨率,选择要转换为位图的全部对象,然后按
,之后你可以删除或隐藏矢量原始文件。因此,一个“导出硬化”的文件——有最大可能被导出为 PDF、导入到其他程序或打印而不损失质量——通常只有两层:一层是作为单个大位图渲染的类似位图的艺术作品,另一层是所有类似矢量艺术作品都在路径中。
19.6.3 位图输出
作为最后的手段,如果 PDF 也不行,你总是可以将整个设计导出为位图。Inkscape 只能导出为 PNG,但任何数量的其他程序,从昂贵的 Photoshop 到免费的 GIMP 或命令行 ImageMagick,都可以将 PNG 转换为其他位图格式,如旧的(但仍在印刷界流行)TIFF。
19.6.4 使用设备颜色
然而,通常您需要发送给打印服务提供商的不仅仅是忠实再现您设计在屏幕上外观的 PDF 或 TIFF 文件。相反,您需要您的输出使用特定设备的 CMYK 或专色。虽然对使用色彩管理的显示有一些有限的支持,但您无法将任何内容导出为任何输出格式,除了 sRGB 屏幕色彩空间。直到这个区域得到改善,您将需要使用其他软件来纠正这个问题。
我已经成功地将 Inkscape 生成的 SVG 或 PDF 文件导入到 Adobe Illustrator 中,以便为某些对象设置专色,之后我将文件重新保存为 PDF 格式。使用位图输出,仅使用开源工具就可以创建特定设备的 CMYK 文件;首先,将 Inkscape 导出的 PNG 转换为常规 RGB TIFF,然后使用来自 LittleCMS 库的 tifficc 命令行工具将其转换为 CMYK。您需要目标输出设备的 ICC 配置文件来完成此转换。
19.6.5 平铺输出
如果您在办公室或家用打印机上打印卡片,您很可能会使用 A4 或 Letter 纸张格式而不是名片格式。在这种情况下,每张纸打印多份然后裁剪成单独的卡片是有意义的。为了准备可打印的文件,将您的卡片中的所有对象分组,然后使用 创建平铺克隆 对话框创建一个 2×5 的克隆网格,该网格将正好适合您的可打印页面。

图 19-10. 平铺卡片以填充输出页面
^([8]) ghostscript.com
^([9]) littlecms.com
第二十章。教程:创建动画
从一开始,SVG 就被设计为一种用于静态和动画矢量图形的语言。一度被称为“Flash 杀手”,它确实适合各种脚本和声明性动画。不幸的是,即使 SVG 介绍了几年后,真正的 SVG 动画(与静态 SVG 相比)在网络上仍然很难找到。这有几个原因,其中最重要的是缺乏一个单一的播放器标准,它将提供比 Adobe(前 Macromedia)的 Flash 显著的竞争优势。目前,网络上几乎所有的动画要么是 Flash 格式,要么是动画 GIF 格式——就像五年前一样。
从 Inkscape 的角度来看,这或许是一件好事。Inkscape 目前还不支持创建动画 SVG 文档(除非你通过 XML 编辑器手动添加动画属性),并且只能静态地显示 SVG 文档。但你可以使用 Inkscape 创建静态帧,然后使用其他软件将它们组合成 GIF 或 Flash 动画。这种方法一开始可能看起来有些笨拙,但实际上是可行的,并且可能产生非常好的效果。为什么这值得麻烦,哪些类型的动画最适合这种技术?
任何包括复杂自然或交互运动的动画可能都超出了本教程中描述的基于 Inkscape 的动画技术所能达到的范围。没有时间轴控制,很难制作除了简单重复动画之外的内容。然而,对于 Web 上的许多动画——横幅、标题、博客头像——这种描述非常合适。
20.1 创建模板
在 Inkscape 中表示动画帧最自然的方式是将它们放在单独的图层上(4.6 图层)。你可以轻松切换每个图层的可见性,以查看你的帧是如何堆叠的,并控制从一个帧到下一个帧的变化。然而,手动创建许多图层(图层 ▸ 添加图层)是非常繁琐的。我编写了一个简单的 Python 脚本,它创建了一个 200x200 像素的文档,包含 100 个空图层:
print """<svg width="200" height="200"
>"""
for i in range(100):
print '<g inkscape:groupmode="layer" display="none" id="%03d"/>' % (i + 1)
print '</svg>'
所有图层都是默认隐藏的(这就是 display="none" 的作用),所以在 Inkscape 中,你需要逐个显示它们(4.6.3 当前图层指示器)才能在上面绘制。你可以通过脚本创建的图层数量(range(100))以及画布的尺寸(width="200" height="200")来调整。将脚本保存到文件 generate-layers.py 中,然后在你的操作系统命令行(或“终端”)窗口中运行它,并将输出捕获到 SVG 文件中。(你需要在你的计算机上安装 Python 语言解释器;你可以在 python.org 获取它。)然后,在这个文件上运行 Inkscape:
$ python generate-layers.py > ani.svg
$ inkscape ani.svg
您还可以将生成的文件(ani.svg)放入您的 ~/.inkscape/templates 文件夹中,它将作为一个模板使用,因此下次您可以从 文件 ▸ 新建 列表中选择它来创建一个空的 100 层文件。以下是 Inkscape 的 图层 对话框(4.6.4 图层对话框),这对于处理这样的多层文件是必不可少的:

图 20-1. 加载到 Inkscape 中的 100 层动画模板
20.2 第一帧
让我们制作一个跳舞人物的动画——既吸引人又足够简单,不需要太多的绘画技巧,并且适合动画的小格式(以及这个简短的教程)。我们英雄的成名之处将在于他的动作,所以我们不需要让他看起来太复杂。像这样的原始棍状人物就足够了:

图 20-2. 我们开始使用的棍状人物,显示节点在节点工具中的情况
它由三条简单的路径(手、腿和身体)和一个椭圆(头部)组成。使用钢笔工具(14.1 钢笔工具)和
绘制水平/垂直的直线;然后使用椭圆工具(11.4 椭圆)创建头部。然后,为了便于插值,在身体和四肢上执行 路径 ▸ 合并,使它们成为一条路径,并在节点工具(12.5.3 删除和创建节点)中点击
以在其肘部和膝部关节处添加节点。
20.3 缓动
现在通过复制角色(
选择头部和身体),将其移动到右侧,并调整其节点(在节点工具中),以给我们的男子一个有趣的舞蹈姿势。因此,我们得到两个 关键帧,整个动画可以简单到只是在这两个帧之间交替。

图 20-3. 两个关键帧
然而,添加中间帧以使关键帧之间的过渡更平滑会更好。动画师称之为tweening(源自between),Inkscape 可以在一定程度上自动化此过程:选择两个身体(即,两个路径对象),然后执行扩展 ▸ 从路径生成 ▸ 插值。指定插值步数(例如,4),选择插值方法 1,如果需要,可以使用非零的指数值来使运动速度非线性地加快或减慢。然后,可以通过使用相同数量的步骤和相同的指数值进行另一个插值,将头部椭圆放置在插值后的身体上(图 20-4)。
如果插值步骤看起来不正确,您可以撤销插值,调整关键帧,然后重新插值,直到您满意为止。插值方法 1(13.3 路径扩展)与路径上相同位置的节点匹配,因此当其中一个关键帧路径是通过调整另一个路径而没有添加或删除节点(如我们的情况)创建时,它更可取。如果两个路径来自不同的来源并且具有不兼容的节点,则方法 2更好。

图 20-4. 插值关键帧
20.4 合成和创建帧
现在是时候将我们的动画放置在画布的正确位置,并将帧分布到各个层上。再次取消插值,并将第二个关键帧直接放在第一个上面。(注意,舞者的右脚在两个关键帧中都是一致的,因为它 resting on the floor.) 选择两个重叠的图形并将它们放置在画布上,如果需要,进行缩放,并考虑您计划添加的其他元素(例如,文本标题)。最后,再次在原地插值身体和头部:

图 20-5. 原地插值
在 Inkscape 中接下来要做的任务有点无聊(未来版本可能会自动化)。您需要取消组合插值路径的组,并将每个路径从 002 到 005 手动放置在其层上,关键帧占据 001 和 006 层。然后,以相反的顺序复制帧:从 005 到 001 的帧进入 007 到 011 的范围,使舞者平滑地回到原始位置。
使用
和![http://atomoreillycomsourcenostarchimages1735518.png.jpg]将选定的对象向上/向下移动一层,并观察状态栏,它会告诉您选定的对象位于哪一层。或者,您可以将对象剪切(
),切换到目标层,并粘贴到原位(
)。最后,确保所有使用的层都是可见的,并保存 SVG 文件。
20.5 导出和生产
您可以手动导出层,但这可能会相当令人沮丧——尤其是如果您在查看结果并对源文件进行更改后需要多次这样做。由于 Inkscape 提供了一组强大的命令行参数,我编写了另一个 Python 脚本来自动化导出。该脚本接受源文件名、要导出的起始和结束层的编号以及结果 GIF 的名称作为参数;然后调用 Inkscape 分别导出每个层。导出后,此脚本调用 ImageMagick 的 convert 实用程序将帧组合成动画 GIF 文件,然后可以在任何图形网页浏览器中查看。
import os, sys
for i in range(int(sys.argv[2]), int(sys.argv[3]) + 1):
os.system("""inkscape --export-png=%s-%03d.png --export-id=%03d \
--export-id-only --export-dpi=400 --export-area-canvas \
--export-background-opacity=1 %s""" % (sys.argv[1], i, i, sys.argv[1]))
os.system("convert -loop 0 -delay 10 %s-*.png %s" % (sys.argv[1], sys.argv[4]))
保存为produce-gif.py并运行:
$ python produce-gif.py ani.svg 001 011 stick.gif
Exporting only object with id="001"; all other objects hidden
DPI: 400
Background RRGGBBAA: ffffffff
Area 0:0:100:100 exported to 444 x 444 pixels (400 dpi)
Bitmap saved as: ani.svg-001.png
Exporting only object with id="002"; all other objects hidden
...
Exporting only object with id="011"; all other objects hidden
...
我们到目前为止的输出可以在网上查看www.kirsanov.com/inkscape-animation/stick.gif。
注意
您可以使用开源的 Gifsicle 程序www.lcdf.org/gifsicle代替 ImageMagick 的 convert 实用程序来将帧组合成动画 GIF 文件。它的优点是它可以优化动画,减小文件大小。
注意
如果您希望动画以 Flash 格式而不是动画 GIF 格式,一个简单的方法是将您的 SVG 转换为静态 SWF 帧(例如,使用 svg2swf 工具,robla.net/1996/svg2swf)然后组合帧以创建动画,我推荐使用 SWF Tools 包swftools.org)。生成的 SWF 文件可能不是非常高效,但它会工作。
20.6 绘制阴影
我们的棍状动画看起来最多只是轻微吸引人。这种平滑的矢量风格适合技术动画,例如演示机器的工作原理,但对于动画舞蹈来说并不太有启发性。我们能做些什么来改善它吗?
隐藏除001之外的所有层,选择图形并降低其不透明度。然后,使用书法笔(14.3 书法笔工具),选择宽度为 20,颤动为 40,并在棍状图形上绘制,试图使其更加随机、有趣、个性化。在此过程中,您还可以添加更明显的脚和拳头,以及更符合人体形态的身体。

图 20-6. 使用书法笔进行阴影处理
完成后,删除原始的骨架图——它已经完成了蓝图的功能,不再需要。结果还不错,但在洁白的背景上,它的粗糙感显得有些突兀。为了解决这个问题,将笔的宽度减少到 1,并在舞者周围添加一些细的随机线条,暗示他的肢体动作和地板上的阴影。如果你觉得这看起来太随机了,不用担心——当你看到他移动时,这种随机性会变得生动而自然。

图 20-7. 移除骨架,添加运动噪声
在这种类型的项目中的主要规则是,不要复制。手绘的粗糙感不能回收;无论一帧与另一帧多么相似,你都需要从头开始绘制每一帧,除了用作引导的棍状人物外,不使用任何其他东西。复制自由手绘的线条(即使你移动或缩放它们)会立即杀死粗糙的自然感,使你的动画显得生硬而乏味。不要偷懒;你画得越多,就越容易。
结果当然值得付出努力:查看www.kirsanov.com/inkscape-animation/rough.gif以查看完整的手绘动画。这比插值后的棍状人物更有启发性!
注意
使用相同的技巧,你可以用书法笔手动在导入的位图中绘制轮廓。将位图设置为半透明,并在其上方绘制草图,尝试突出最重要的特征并忽略其余部分。在动画中,源位图可能是视频的帧、静止照片或渲染的 3D 图像。
如果需要,你可以通过取消隐藏所有图层,选择所有形状,并在画布上根据需要移动/变换它们来移动整个动画——例如,为上面的标题腾出空间。
20.7 文本
现在,让我们给我们的动画添加一个文本横幅——只是一个单词,“dance!”。我们能否比将相同的静态文本对象复制到每一帧做得更有趣?
再次强调,我们可以使用书法笔在用作引导的一些文本对象上绘制皱褶的书写字母,从而使整个动画风格统一。然而,为了演示目的,让我们尝试另一种方法:让文本横幅像旗帜一样平滑地飘动。要扭曲文本,可以使用包络变形路径效果(13.1.8 包络变形);然而,可能更快的方法是应用一些节点雕刻(12.5.7.2 节点雕刻)。
使用一款好看的字体创建一个文本对象,将其转换为路径(
),取消组合(
),合并(
),切换到节点工具(
),选择所有节点(
),然后
-拖动其中一个。整个形状将平滑地弯曲和拉伸。如果字母形状扭曲得太厉害,撤销拖动并按
几次,每次加倍节点数量——这通常有助于使你雕刻的路径表现得更加自然。

图 20-8. 文本旗帜上的节点雕刻
现在将文本对象复制两份,分别对每一份进行不同的雕刻,使它们看起来像两面旗帜在风中飘扬,然后在它们之间进行插值。接着,就像我们对舞者形象所做的那样,将插值步骤分配到不同的层级中,将它们放置在画布上的形象上方(图 20-9). 不要担心绝对精确的位置;旗帜轻微的晃动不是问题(甚至还会增加一些个性)。

图 20-9. 插值旗帜
要确定每个对象相对于前一个层的位置,请使用“图层”对话框中的不透明度控制,使前一个层临时变为半透明。再次使用*produce-gif.py*脚本来组合动画 GIF。到目前为止的结果可以在www.kirsanov.com/inkscape-animation/with-banner.gif上查看;以下是 001 到 005 帧:

图 20-10. 动画的一半帧(前进运动)
20.8 背景
我们动画唯一不令人满意的地方就是它完全没有颜色。你可以通过给每一帧添加不同的背景颜色来解决这个问题,以获得真正的频闪舞池效果。选择这些随机颜色也可以自动化:创建一个未设置颜色的矩形,并使用创建平铺克隆对话框(16.6 平铺克隆)来对其进行一些色调变化。
用对比鲜明的酸性颜色绘制“舞蹈!”横幅,并且每一帧都有所变化。最后,为了让跳舞的人从背景中脱颖而出,在他身后添加一个椭圆形的渐变“聚光灯”;在每一帧中随机移动、缩放和旋转聚光灯,以增加额外的活力效果。最终版本可在www.kirsanov.com/inkscape-animation/final.gif查看。请享受吧!
第二十一章。教程:绘制 3D-正确卡通
如同在11.3.1 为什么使用 3D 盒子?中提到的,Inkscape 的 3D 盒子工具并不是用来替代专业 3D 设计应用的。Inkscape 是一个绘图程序——因此,其 3D 盒子工具最好用作绘图辅助工具。这就是我们将在本简单教程中尝试做的事情。
一个“3D-正确”的绘图仅仅是满足了几何透视规则,这些规则已经为艺术家们所熟知,并且被应用了数百年。它不需要表现出完美的真实阴影和纹理;它只需要在角度和尺寸上大致正确地绘制线条和物体。
当然,有些绘图风格甚至不需要正确的透视;有时,故意的透视扭曲可能具有其自身的艺术价值。许多艺术家擅长绘制 3D 正确的艺术作品,而不使用任何技术辅助工具。然而,在许多艺术作品中,你经常会注意到从几乎不明显到令人尴尬的透视错误,这些错误在没有它们的情况下肯定会表现得更好。因此,我认为许多艺术家——不仅仅是初学者——会欣赏一种快速简单的方法来设置绘图的透视,而不需要繁琐的手动测量和辅助线。让我们看看如何在 Inkscape 中完成这项任务。
21.1 房间
假设我们想要绘制一个简单的场景,两个人在房间里的会面。切换到 3D 盒子工具(
),并在画布中间拖动以绘制房间的盒子:

图 21-1. 创建房间
不要试图一开始就画得正确;相反,只需拖动盒子的手柄,如果需要,调整消失点。角落手柄可以让你调整房间的大小;四个 X/Y 手柄默认在 X/Y 平面内移动,当按下
时沿 Z 轴移动,而四个 Z 手柄则相反,在没有按下
时沿 Z 轴移动,当按下
时在 X/Y 平面内移动。X 形中央手柄将整个房间移动,在没有按下
时在 X/Y 平面内移动,当按下
时沿 Z 轴移动。在 X/Y 平面内移动手柄时,按下
以限制其移动仅限于 X 轴或仅限于 Y 轴。最后,拖动消失点将重新倾斜和调整房间的大小以适应改变后的透视(11.3.3 透视和消失点)。
除了 X 和 Z 轴上现有的消失点外,你还可以在 Y 轴上创建第三个消失点(换句话说,使 Y 消失点有限)。如果你想让你的图像看起来“更近”并且从更强调的角度观看,就像由房间角落的蜘蛛而不是远处的人类观看一样,请这样做。相反,如果你想要一个更分离、技术性的“远处”外观,你可以使两个或三个消失点无限:

图 21-2. 不同的视角
21.2 家具
接下来,让我们添加一些家具——例如,一个沙发。
在创建 3D 盒子组合时,使用对齐(7.3 对齐)非常方便,这样盒子可以精确对齐。打开文档属性对话框 (
),在对齐选项卡上,启用对齐到路径和对齐到节点。
现在,在较大的盒子内部绘制一个较小的盒子。(我们不需要担心盒子的 z 顺序;它们的默认样式使用部分透明度,这样你总是可以看到你创建的所有盒子的边缘。)请注意,新盒子使用与房间盒子相同的视角(即,相同的消失点)。抓住其左下角的 X/Y 手柄并拖动,使其对齐到房间的左下角 Z 边缘。这将成为沙发的基座;使用其他角落手柄来调整它的高度、宽度和深度:

图 21-3. 沙发的基座
对于沙发的背面,你可以以类似的方式绘制一个新的盒子并将其对齐;或者,更简单的方法是复制沙发底座 (
),并拖动其 X/Y 手柄来调整其大小到正确的形状:

图 21-4. 沙发的背面
现在,假设这是一个地下室,让我们在沙发的两侧放置两个小地下室窗户。在 X 维度上压扁的几个盒子将完美地作为窗户。然而,由于窗户的任何一边都不与任何其他盒子的任何一边对齐,我们如何正确地放置它们呢?
再次,复制然后调整大小的技巧是实现这一点的最简单方法。复制你拥有的最大的盒子(即房间本身);
-将其前 X/Y 手柄向后拖动(沿 X 轴)以将其挤压成薄片;然后,拖动 X/Y 平面上的四个手柄以调整窗户的大小。对于第二个窗户,只需复制第一个,并
-将其中央手柄在 Z 方向上拖动;这样,第二个窗户将是第一个窗户的精确透视复制。使用相同的复制和展平技巧,在 Z 轴最远的墙上(即最接近 Z 消失点的墙)添加一个门道盒子,使其突出于房间盒子之外:

图 21-5. 窗户和门
21.3 人物
现在,我想画两个人,一个站在沙发上,另一个在门口。你可能会问,3D 盒子工具与画人有什么关系?很多!虽然我不会用平行六面体建模出机器人般的结构,但我仍然想确保人物在绘图中的高度和体积是正确的,而实现这一点的一个简单方法就是使用 3D 盒子工具。
我这样做。首先,我在门口添加了一个又高又窄的盒子——这将是我们的人物 1 号。和之前一样,我只是复制了门口的盒子,在 X/Y 平面上挤压它,并调整大小以获得人物高度和门口高度的逼真比例。(请某人站在真实的门口以获得灵感。)
然后,我复制了第一个人物盒子,并使用中间的 X 形手柄,
-将其拖到前面,然后
-沿着 X 轴水平拖动一点。这将是我们站在沙发旁的第二个人物。

图 21-6. 两个人
这样,两个人物盒子都具有相同的透视调整高度,并将作为实际绘制人物的有用指南。如果我要尝试达到更好的解剖学精确度,可以为每个人物的腿、身体和头部使用三个盒子堆叠(不幸的是,然而,在 Inkscape 的当前版本中,你无法同时拖动多个选定的盒子。你只能逐个拖动它们)。
21.4 绘制和着色
足够的盒子;是时候收起 3D 盒子工具,拿起书法笔,开始在 3D 蓝图上绘制草图了。创建一个新的图层,这样你可以分别显示和隐藏 3D 盒子和实际绘图。
当然,你不需要精确地追踪盒子的边缘。对于非几何物体,如沙发和人物,这几乎是不可能的,但即使是墙壁和窗户,也会从一些手绘的粗糙和不完美中受益。使用 3D 盒子的边缘作为一般指南来保持关注,但除此之外,你应该像没有使用任何指南一样自由地绘制,使用你自己的草图方式和风格。你也不需要追踪所有线条;一些可以省略,一些可以通过短的部分笔触来暗示。

图 21-7. 在 3D 蓝图上绘制草图
你会发现,在处理细节的同时,3D 盒子使得记住你绘图的整体构图和空间关系变得容易得多。我在另一篇教程中描述了自己的草图风格,使用了书法笔(20.6 刮擦),所以这里不会过多详细说明;因为这个教程的重点是使用 3D 盒子工具,在这幅画中,我的草图甚至比平时还要简略。不要试图模仿我;你应该尝试找出最适合你的风格。完成基本轮廓后,你可以关闭 3D 图层,看看你的图像凭借自身优点如何独立站立,如图 21-8 所示。

图 21-8. 当草图完成时,隐藏 3D 图层。
最后,我给草图上色,再次使用我最喜欢的宽模糊彩色笔触在深色清晰轮廓下进行上色:

图 21-9. 添加颜色
第二十二章. 教程:艺术绘画
在矢量编辑器中,Inkscape 是最好的草图和自由手绘选择之一,这得益于其功能强大的书法笔工具(14.3 书法笔工具)。与其它矢量工具相比,书法笔不仅几何上不完美(且无聊),而且具有个性——并且它产生的是始终可编辑的矢量对象。
在这个教程中,我们将通过在 Inkscape 中创建一个简单的绘图过程来了解——让我们尝试绘制一个有趣的卡通奔跑的马,这可能是一个吉祥物或漫画角色。我一直觉得从零开始绘制任何东西都是一项挑战(并且我想许多读者会表示同情)。然而,有了 Inkscape,我能够制作出我真正喜欢的画作。
22.1 第一幅草图
让我们从切换到书法笔工具并设置工具控制栏中的宽度为 0.05 和细度为 0.2 开始(14.3 书法笔工具)。如果你有绘图板,请启用笔压以改变笔触宽度(14.3.1.1 压力感应)。角度和固定参数仅对书法有意义,对自由手绘没有意义,因此我们将固定设置为 0,这实际上将固定角度的笔转换成了一个没有方向的圆形画笔(14.3.2 角度)。
我以前从未画过马,我的前几笔就明显地暴露了这一点。以这样的开始,我想很多人都会像我一样,当时就想放弃。但耐心和努力会得到回报,尤其是在 Inkscape 中。只需不断地在画布上画笔触,撤销,调整,然后再画。迟早,一些不那么糟糕的东西会从混乱的线条中闪现出来。

图 22-1. 第一笔
对于大多数人来说,绘制物体需要视觉辅助;你可能发现自己很难独立想象一匹马的体态曲线或腿部的弯曲方向。我发现真实马匹的照片对我帮助不大。更有启发性的是风格化的绘画,其中其他更有能力的艺术家已经完成了抽象和放大核心骑马视觉特征的工作。通过谷歌图片搜索,你可以找到大量的参考资料。经过多次草图绘制、撤销和强调(通过增加笔压),我得到了这张草图:

图 22-2. 第一幅草图
22.2 着色
漫画或卡通艺术家的工作流程包括两个主要阶段:草图(通常用铅笔)和墨迹(用笔)在草图上。你可以在 Inkscape 中遵循同样的过程。现在绘图看起来或多或少像一匹马,是时候开始在其上墨迹以进一步发展它了。这样,你可以看到原始草图中的优点,并尝试在此基础上构建,而不用担心因为过多的调整而破坏它。选择所有线条(
)并将它们的透明度设置为 0.05,这样它们就几乎看不见了;这有效地隐藏了细线条,使得集中精力在粗线条上更容易。然后,锁定这一层(使用状态栏中的锁定切换按钮),创建一个新的层(图层 ▸ 添加图层),并再次绘制同一匹马,使用草图作为指南:

图 22-3. 在新层上绘制草图
这是不是同一匹马?并不完全一样。第一幅草图中的马试图看起来像一匹真正的马——可能太真实了。记住,我们想要的是卡通,而不是现实的东西。这通常是通过放大你的生物的头部(尤其是眼睛)和腿部(或手,或爪子)来实现的。在第一层墨迹中,让我们就这样做:保持身体不变,但放大蹄子和头部,添加一对超大的卡通眼睛:

图 22-4. 变得卡通化
22.3 调整
向量编辑器的独特优势在于所有线条都保持为独立对象。这使得调整绘图的部分变得容易,比如推动、缩放或旋转。使用选择工具,拖动腿部或头部以选择所有对象,并使用鼠标手柄或方便的键盘快捷键:
来移动,
或
来缩放,或
或
来旋转。在错误的缩放或位置上产生一条好的线条,然后将其转换以适应,这相当容易。即使它已经看起来可以接受,玩弄你角色的肢体或面部特征也可以使其比你想的更富有表现力:

图 22-5. 调整绘图元素
与纸张不同,你不仅限于只有一个墨水层。任何时候,你都可以隐藏之前的草图层,淡化,锁定当前层以使其成为新的草图,并在其上方创建一个新的墨水层。通常,每次这样的过渡,你的画作看起来会越来越不像铅笔草图,而更像是一幅真正的墨水画,线条更平滑,细节更丰富。这是我基于之前的草图层的第三次墨水尝试(头部特别难雕刻——我的马最初看起来更像一只河马):

图 22-6. 另一个墨水层
22.4 着色和平滑
现在轮廓几乎完成,是时候开始考虑给画作上色了。Inkscape 可以模仿许多不同的着色风格。例如,你可以通过叠加许多随机的书法笔触并使用不同的颜色和透明度(你可以使用调整工具来完成,8.7.1 颜色绘制)来模仿一幅画。让我们尝试一种更传统的、平滑的着色,由平色填充和一些光影(白色和黑色的椭圆以及椭圆透明度渐变,10.1.2 椭圆渐变)组成。使用油漆桶工具(14.4 油漆桶工具)创建内部形状;你可以给它应用一点模糊(大约 2%)以增加平滑度(图 22-7)。

图 22-7. 着色选项
让我们回到我们的轮廓图(现在先隐藏着色层)。如果你选择图形的一部分的所有线条(例如一条腿或头部),将它们合并(
),并通过按
几次来简化结果,它可以变得更加平滑和吸引人。这将使尖锐的角变得柔和,并焊接接缝,使外观更加自然和完整。另一个非常实用的技巧是通过外扩(
)使所有线条变粗,或者通过内缩(
, 12.4 外扩)使线条变细。路径上的多次内缩和外扩会产生类似于简化的效果。过多的内缩可能会导致某些线条部分完全消失,但这并不一定不好——相信整体印象和你的艺术感。当然,节点工具(12.5 节点工具)也可以用于手动编辑线条。

图 22-8. 焊接和熔化
22.5 绘制头发
对于许多初学艺术家来说,绘制看起来逼真的头发尤其困难。在规律性和混乱、整洁与杂乱之间找到合适的平衡,对于你角色的印象至关重要。在这个阶段,我的马的尾巴和鬃毛并不令人印象深刻——我反复地画了很多次,但所有的尝试看起来要么太粗糙,要么太浓密(或者两者兼而有之)。我最终通过在书法笔中使用高值颤动(14.3.4 颤动、摆动和密度)来制作出令人满意的波浪状头发,如图图 22-9 所示。最大化这个参数使得书法笔的笔触变得很斑驳,比我能手动制作的更加均匀。

图 22-9. 绘制头发
22.6 完成绘制
最后一步是尝试缩放、旋转和倾斜整个绘制——这有时可以在不费太多功夫的情况下显著改善效果。总的来说,结果比我预期的要好得多,我非常确信我绝对无法通过在纸上绘画达到这种质量水平。当然,这并不是在 Inkscape 中可以做的唯一绘图风格;尝试找到最适合你的技术。我特别喜欢使用高颤动值的书法笔,它几乎提供了“自然媒介”的绘图工具。

图 22-10. 其他自由手绘示例
注意
虽然电脑绘图的最佳设备是绘图板(14.3.1.1 压力感应),但仅使用鼠标也可以做出不错的 Inkscape 绘制。用鼠标操作的手不能在任何方向上快速或自然地移动;水平线条通常比垂直线条容易,比斜线更容易。因此,你可能需要画几条水平的线条,然后根据需要旋转它们,甚至旋转整个绘制,以便你正在工作的部分更容易绘制。*
第二十三章。教程:技术绘图
除了我们迄今为止看到的一切之外,你还可以使用 Inkscape 创建简单的技术图纸。让我们尝试绘制一个发动机部件横截面的等距图像(图 23-13)。Inkscape 并不打算取代真正的计算机辅助设计(CAD)应用程序。在 CAD 程序中创建此类技术图纸可能更直接——但前提是你拥有它并且知道如何使用它。在大多数其他情况下,由于 Inkscape 的图形能力和多功能性,它是一个自然的选择,可以使你的图纸不仅精确,而且视觉效果令人印象深刻。
在 Inkscape 中创建此类技术图纸的关键是使用网格(7.2 网格)、对齐(7.3 对齐)、通过数字变换(6.6 通过数字变换:X, Y, W, 和 H)和形状,特别是矩形(11.2 矩形)。正如你将在本教程中看到的那样,这些功能的组合使得可以在不手动调整任何东西或近似形状或位置的情况下创建整个绘图:每个对象、手柄和节点都紧密精确地“对齐”到其位置。一旦你掌握了这个技巧,你将能够快速而轻松地制作出类似的草图。
23.1 设置网格
我们将制作一个等距图像,这意味着三个坐标轴之间都有相等的角度(60 度)并且具有相同的比例。这使得它更容易使用;例如,无论你沿着哪个轴测量,立方体的长度都保持不变。
打开文档属性对话框(7.2.1 网格选项),选择网格选项卡,并创建默认的轴测网格,X 轴和 Z 轴的角度都设置为 30 度(从水平方向测量)。你可能希望设置间距(即使网格是等距的,它也会以相同的方式影响所有三个轴)为你的绘图中最小可测量的距离。例如,如果绘图元素的尺寸都必须以毫米为单位,并且精确到第一位小数,则将网格间距设置为 0.1 毫米,这样你就永远不需要在网格线之间放置任何东西。
你也可以更改主要(较暗)网格线的间距;默认情况下,它们每五条常规线出现一次。当你缩小视图时,次要网格线首先消失,以使显示更清晰。

图 23-1. 设置等距网格
23.2 制作盒子
在开启网格(默认情况下,对齐到网格)的情况下,让我们先绘制我们物体的底部盒子。使用矩形工具绘制任意大小的矩形(我们稍后会调整大小和放置)。注意,矩形的角落可以轻松地对齐到网格线交点(注意对齐指示器和提示,7.3.4 对齐首选项),但矩形不是轴测图。最容易的方法是什么,将其倾斜到等轴测投影,使其正好适合网格?
打开变换对话框(
,6.7 变换对话框),在倾斜选项卡中,将水平倾斜设置为 60 度,将垂直倾斜设置为 30 度。点击应用后,矩形被变换,可以用来作为盒子底部平面的顶部。注意,矩形的调整大小手柄现在也可以在轴测投影中移动(11.2.1 调整大小),所以你只需要将它们对齐到相应的网格交点,如图 23-2 所示。
盒子的另外两面创建起来甚至更简单:对于正面,你只需要 30 度的垂直倾斜,水平倾斜设置为 0。盒子的左侧只是正面复制(
)并翻转(
)。倾斜和翻转后,不到一秒钟就可以将所有三个矩形的角落对齐,形成一个精确、坚固、无缝的 6x8x2 盒子(就我们的目的而言,X 和 Z 轴上的单位数应该是偶数,这样我们就有了一条正好穿过中心的网格线):

图 23-2. 创建、倾斜和定位盒子的顶部

图 23-3. 创建盒子的正面和左侧
现在你已经有一个盒子了,你可以通过复制其侧面并将角落重新定位到新位置来快速构建复杂的结构。然而,这并不是我们想要做的。我们的下一步是给盒子的角落圆角。
23.3 圆角处理
要在矩形中制作圆角(11.2.2 圆角),只需抓住圆形手柄并沿着侧面拖动。在箱子的双斜面顶部,圆角工作完全符合预期——矩形在其平面内变得圆润,并具有适当的投影扭曲。在拖动其中一个圆角手柄时,将其对齐到最近的交点,以便圆角半径等于一个网格单位。然后,移动前部和左侧的大小手柄,使它们每侧都窄一个网格单位:

图 23-4. 在箱子的顶部圆角
现在我们需要一些东西来填充箱子角落的垂直间隙。为此,让我们创建一个垂直圆柱体,其副本(或克隆)我们可以放入箱子的三个可见角落,以及以后用于我们发动机部件的大顶部圆柱体。
要制作一个圆柱体,我们需要从一个椭圆开始——但要制作这个椭圆,我们甚至不需要椭圆工具。相反,只需复制箱子的顶部并调整大小为 2x2 网格单位的等距正方形。由于这种调整大小保留了半径为单位的圆角,这给了我们一个完美的等距椭圆:

图 23-5. 从矩形创建椭圆
要创建一个圆柱体,我们可以复制这个椭圆,将其向下移动,并在它们之间绘制一个平坦的非等距矩形。虽然可行,但这种方法并不是“干净”的,因为我们没有在椭圆的端点处有任何网格线来将矩形的左右边缘对齐。因此,这种方法需要关闭对齐并使用手动调整,这不可避免地会牺牲速度和精度。让我们尝试另一种方法。
将椭圆形状矩形的副本转换为路径(
)并切换到节点工具(
)。注意,在椭圆的左右端点处没有节点,而我们将在那里需要它们。选择所有节点(
),并通过按
(12.5.3 删除和创建节点)在两个选定的节点之间插入新节点:

图 23-6. 在椭圆的端点添加节点
现在,仅选择水平端点的两个节点(上面标记为左和右)并复制它们(
)。通过使用
拖动将椭圆下半部分的节点全部添加到选择中。抓住与网格线相切(标记为切线)的节点,并
-拖动它和其余选定的节点向下,直到它们在两个单位以下的位置对齐,从而创建理想的精确圆柱形状。之后,你只需要将原始椭圆的副本放回顶部,并绘制一个水平渐变(图 23-7)。

图 23-7. 拉伸、着色和封顶圆柱
现在,只需将三个圆柱的副本移动到填充圆角盒子的间隙中——它们将紧密地适应它们的位置。要让盒子看起来像一个完整的整体,你只需要整理 z 顺序并匹配颜色。使用滴管工具(8.6 滴管工具)从平面侧面复制颜色到圆柱的渐变停止点或反之亦然。

图 23-8. 盒子准备好了。
23.4 制作顶部圆柱
再次复制角落圆柱,并按
将其放大两次,然后将其对齐到盒子的中心上方。
复制顶部的椭圆并将其就地缩小到 50%(
)。之后,你甚至不需要移动它到任何地方——它已经精确地位于模仿顶部圆柱孔的位置。要使其看起来像孔,只需添加一个方向与圆柱相反的水平线性渐变。同时,再制作三个孔的副本,将每个副本对齐到基盒的角落,并再次按
缩小——这些将是固定细节的螺栓孔:

图 23-9. 添加顶部圆柱和孔
23.5 制作剪切块
现在已经准备好了物体的全等距视图。但是,为了演示一些额外的技术,我决定创建一个物体的剪切块,以展示其两个垂直的横截面。
由于我们迄今为止所做的一切都是对齐到网格的,因此添加切割形状非常容易。切换到钢笔工具(14.1 钢笔工具),并在横截面的左侧角落附近点击。然后,从
按压以创建相同路径的第二个子路径,点击右侧:

图 23-10. 添加切割形状
通常,技术图纸中的切割部分会填充一个代表物体材料的图案。对于金属,使用纯条纹,我们可以通过使用预设图案之一来表示我们的物体是金属的。打开填充和描边对话框(8.1.1 绘画),在填充选项卡上点击图案按钮,并选择条纹 1:8图案。这个图案的唯一问题是它显示在透明背景上的黑色条纹,但我们需要在白色背景上显示黑色条纹。只需复制形状,将其涂成白色,并将白色副本在 z 轴顺序中移到条纹形状之下。

图 23-11. 绘制条纹
现在我们需要移除切割部分前面的物体部分。拖动并删除最前面的圆滑圆柱。使用矩形大小调整手柄,收缩盒子的顶部和左侧,使其对齐到切割的边缘。至于其余的物体(盒子的顶部和圆柱的顶部椭圆),我们需要实际切割它们。
再次使用钢笔工具,绘制一个三角形,并从形状中减去这个三角形(选择两者并按
,12.2 布尔运算),如图图 23-12 所示。

图 23-12. 切割不必要的部分
最后,创建通过切割形状可见的孔的内部:复制圆柱形状,将其缩小 (
),并在 z 轴顺序中将其向下移动,使其位于切割形状和孔椭圆之下;这将形成孔的内表面。使用节点工具,选择并向下拉动该形状的底部节点。然后,复制孔椭圆,将其涂成白色,并将其向下移动以表示孔的底部边缘。选择孔顶部的椭圆并将其复制到剪贴板 (
);然后选择内表面圆柱,并将样式粘贴到其上 (
) 以将孔的水平渐变扩展到孔的整个内表面:

图 23-13. 创建孔的内表面
第二十四章。教程:玫瑰
这张复杂图像(见封面)是为了展示 Inkscape 的强大功能和多功能性。一朵玫瑰的单独绘制在每个五平方窗口中以及背景中以不同的方式呈现。因此,一个展示创建此图像所有阶段的教程相当于至少六个不同的教程,教你六种不同的方法绘制玫瑰——或者任何其他东西。
我们将从一张照片开始。当然,您不必这样做;如果您比我画得更好,您可以直接在空白画布上绘制任何您喜欢的图案。然而,追踪照片本身是一种有用的技术。
文件 ▸ 导入 (
) 照片,按方便的比例和位置调整。将图像所在的图层重命名为背景,创建一个新的图层墨迹;我们需要经常隐藏和显示照片,当它在自己的图层中时这样做会更容易。降低照片的不透明度并锁定其图层,这样你就不会意外地移动它。之后,只需开始追踪照片的轮廓和颜色之间的边界(图 24-1)。

图 24-1. 导入图像并使用书法笔设置追踪
用于追踪图像的工具取决于图像的性质和您想要得到的结果。如果您正在追踪可以用直线和 Bézier 线段轻松表示的几何形状,请使用钢笔工具。如果您需要更多自由形式和艺术形状,同时尽量减少路径和节点的数量,铅笔工具是更好的选择。最后,如果您追求的是特别有表现力,甚至可能是“杂乱无章”的风格,请使用书法笔。我想我的绘画简洁但富有艺术性和自然,我没有理由在节点数量上节省,所以我使用了书法笔:

图 24-2. 追踪完成:墨迹中的 106 个路径对象
我使用了一支压力感应笔,它允许我根据笔的压力大小调整笔触宽度。然而,您只需使用普通鼠标就可以达到类似的效果。为什么?因为用笔的压力控制笔触厚度,虽然在理论上很容易,但很少在第一次尝试时就完全符合预期。一个更有效的方法是使用书法笔在有限范围内绘制宽度,然后使用调整工具的收缩/膨胀模式(12.6.4 收缩/膨胀模式)在适当的位置加粗或变细您的笔触:

图 24-3. 使用调整工具调整绘图
黑白轮廓已经准备好了——现在我们需要给它添加颜色。有了清晰的墨水轮廓,尝试一种更柔和的着色方法是有意义的。首先,隐藏背景层。然后,创建一个新的层,水彩,并将其放在你的墨水层下方。之后,用宽书法笔触,画几笔随意的笔触:在玫瑰下画红色,在茎和叶下画绿色,以及围绕这些区域的多种蓝色阴影。最后,通过足够大的半径模糊这些笔触,使它们开始融合在一起:

图 24-4. 添加模糊背景
这已经看起来不错了——但还不够好。平滑模糊的斑驳太平滑了——太无聊了。为了使它们看起来更自然,我尝试通过添加更多原始元素来扩展我已应用于背景的简单高斯模糊滤镜。首先,我添加了一个扰动原始元素,与模糊效果复合,以模仿纸张纹理。这看起来更好,但仍然太均匀,太明显是计算机生成的。然后,我又添加了一个具有更大周期的扰动组件,我使用了两次:一次是通过位移图,使整体水彩更加斑驳;然后,通过合成操作,调节小尺度纸张纹理,模仿更真实的纸张,其中一些区域更平滑,而其他区域则更粗糙和有颗粒感:

图 24-5. 建立背景的“现实主义水彩”滤镜
我称之为Sandy Blur的最终合成滤镜(更多内容请参阅17.4.2 原始堆栈),看起来更加逼真——尽管渲染速度慢得多。在这个阶段,我不得不切换到主要在轮廓(3.11 渲染模式)或无滤镜模式(17.4.4 过滤区域)下工作。
作为最终步骤(见封面以查看最终结果),根据个人喜好,你可以复制墨水层的内 容并模糊它以形成阴影,或者(像我一样)通过外扩(加粗)复制的墨水路径并使它们半透明来稍微软化墨水线条。
24.1 处理 1:雕刻
在完成墨水和水彩层之后,我继续创建了一系列其他绘图处理——同一基本主题的变体。我的目标是演示一张图像中的几个特征处理,所以我将玫瑰与五个随机散布的正方形重叠,并将每个处理限制在其自己的正方形内。
首先是一个类似雕刻的版本,由弯曲的变量宽度笔触网格组成。对于这种处理,我选择了一朵玫瑰的部位,那里的花瓣弯曲和阴影特别深且突出。雕刻是一门复杂的艺术;我并不声称我对它的模拟有多好——但令我惊讶的是,使用 Inkscape 的工具来做这件事竟然如此简单。
一旦你有一个轮廓图,并想将其转换为雕刻,第一步是规划:考虑在绘图的每个部分中引导雕刻线条的最佳和最自然的方式。创建一个新图层,并使用书法笔绘制几个宽间距的测试笔触,寻找捕捉每个区域变化曲率的最佳方式,同时保持不同曲率区域边界处的最佳方向对比:

图 24-6. 选择雕刻方框并进行测试笔触
一旦你对雕刻笔触的走向有了想法,就将测试笔触移开(但保留它们以供参考),并使用书法笔的引导跟踪功能(14.3.7 跟踪引导路径)将每个区域填充以均匀间隔的均匀宽度笔触,如图图 24-7 所示。如果你笔触的方向或曲率有些偏离,不用担心;你稍后可以修正它。在这个阶段,更重要的是间隔的均匀性。你可以临时旋转整个绘图,使其更适合绘制。尽量在你要填充的区域边缘之外绘制;修剪过长的线条比延长不足的线条要容易得多。

图 24-7. 使用书法笔创建均匀间隔的网格
其余的工作都在 Tweak 工具中完成——没有它,实际上,制作一个看起来不错的雕刻任务将是不可能的。使用 Shrink 模式来修剪线条末端并使其变细,使用 Grow 模式来使其变粗,使用 Push 模式来移动和弯曲整个网格(你必须选择网格的所有笔触才能一次性影响它们)。不要担心修剪后的线条末端看起来不美观——在最终结果中,它们将被ink层的宽边界线条所覆盖:

图 24-8. 使用 Tweak 工具完成雕刻
在实际的物理雕刻中,你通常切割掉要呈现白色的区域,而不是直接绘制要呈现黑色的区域。这就是为什么示例看起来不像真正的雕刻那么真实的原因之一。
24.2 处理方法 2:镶嵌
这种处理方法比其他方法更容易,因为它主要是自动的。唯一棘手的部分是创建镶嵌本身——即一种复杂的互锁瓷砖图案,它覆盖整个平面而没有孔或重叠。
画一个形状——任何形状!——然后从它创建一个瓷砖克隆的图案(编辑 ▸ 克隆 ▸ 创建瓷砖克隆,16.6 瓦片克隆)和任何非平凡对称群;在这个例子中我使用了 P3。一开始,克隆不会形成任何类型的镶嵌;你的任务是重新塑造源形状——克隆已经就位——直到克隆相遇并平滑地互锁。这比看起来容易得多;克隆立即反映源形状的任何变化的事实使得它几乎微不足道。只需添加节点并将它们移动以在形状中生长出附属物。每个克隆都会生长出类似的附属物。只需简单地调整它们,直到形状完全相遇并覆盖平面:

图 24-9. 创建镶嵌
接下来,我们希望图案反映背景的颜色——这样玫瑰图案就能显示出来。一旦设置好,这个过程就主要是自动的。确保使用瓷砖的保存大小和位置复选框已勾选,删除现有的镶嵌(删除按钮),并设置宽度和高度,使图案覆盖所有需要覆盖的区域。取消设置原始形状的填充颜色(在状态栏中右键单击填充色块并选择取消设置)。然后,转到追踪选项卡,启用追踪瓷砖下的绘图,选择颜色,并将所选值应用到克隆的颜色上:

图 24-10. 使用镶嵌进行彩色追踪
最后一步是使用过滤器添加轻微的磨砂高光到瓷砖上(第十七章)组合起来,并从过滤器 ▸ 斜面应用到组上,如图 图 24-11 所示。

图 24-11. 添加高光
24.3 处理方法 3:立方体场
这种处理方法与颜色追踪镶嵌类似,因为它也是通过创建平铺克隆对话框创建的。然而,在大多数其他方面它有所不同:它是随机的而不是规则的,是伪 3D 而不是平面的,并且使用三个不同的原始对象——因此有三个交织的图案——而不是一个。
让我们先使用 3D 盒子工具绘制这三个原始对象。将每个对象转换为路径组(
)并复制(
)。在盒子的底部副本中,将其作为组输入,选择所有六个面并将它们合并(
),然后取消组合。这会将一个盒子转换成一个单一的盒子形状路径;取消其填充——在克隆中,这个将取背景色的颜色。对于盒子的第二个副本,使用 50%的不透明度和白色或黑色;这将提供阴影,使得每个盒子即使在改变整体颜色的情况下也能看起来像一个盒子。最后,将背景形状和阴影组合成一个单独的组。

图 24-12. 立方体散布的原始对象
现在,对于每个准备好的立方体,在创建平铺克隆对话框中使用颜色到颜色的追踪,在该区域创建一个 P1 对称散布(16.6.6 追踪)。随机化它们的旋转(轻微,以免破坏所有盒子处于共同视角的感知),大小和位置。为了模仿 3D 场的效果,设置缩放和行间距从上到下增加(即每行),如图图 24-13 所示。

图 24-13. 散布的立方体
现在,对另外两个我们准备的立方体重复此过程,覆盖相同的区域。这个立方体组合场看起来还不像是一个场,因为 z 排序是错误的:靠近底部且较大的立方体应该离我们更近,因此应该在其他立方体之上,但它们并不是。为了解决这个问题,使用重排扩展(从扩展 ▸ 排列)重新排列盒子的 z 排序,以便它们从上到下堆叠。然后,从对齐和分布对话框执行单个分散操作,以便在立方体的排列中有更少的间隙。

图 24-14. Z 排序和分散立方体
记住,我们的最终目标是追踪玫瑰背景层的正方形区域。选择你想要追踪的区域,将所有立方体分组,并将组剪切(18.4 剪切和蒙版)到所选的正方形。现在,你可能已经或没有为所有三种图案启用自动颜色到颜色的背景追踪(正如我们在 16.6.6 追踪 中所做的那样);然而,即使你做了,从那里得到的颜色可能相当单调。这是不可避免的,因为盒子相对较大,从大面积采样颜色,平均它,因此使其不如原始背景图像饱和。
因此,看起来我们需要手动绘画立方体。只需选择所有立方体克隆,选择调整工具的着色模式(8.7 颜色调整),选择鲜艳的红色(或使用吸管从背景图像中选取,8.6 吸管工具),并在图像的红色区域上绘画。然后,对其他颜色做同样的事情,包括黑色墨水线条。(如果不起作用,这意味着你忘记了在每个立方体的底部路径中取消填充,参见 图 24-12)。这种平滑、类似位图的绘画方式是编辑矢量绘图的一种有趣方式!

图 24-15. 在立方体上绘画颜色
24.4 处理方法 4:逼真渲染
这种渲染方式是最耗时的:我们希望在这个绘图部分尽可能忠实地重新创建原始照片。当然,绝对的真实感既不可能也不可取,但我们可以尝试达到具有独特吸引力的“矢量逼真”外观。关键在于正确使用形状、渐变和模糊。
在定位我们将要工作的正方形之后,显示包含源照片的图层。然后,首先将你的绘图分为区域,每个区域由单色或单一渐变近似。使用铅笔工具(14.2 铅笔工具)来创建这些区域,使用渐变工具(10.1 渐变工具)在它们上绘画和拉伸渐变。使用吸管工具(8.6 吸管工具)从照片图层中选取精确的颜色。总的来说,尝试减少明暗区域之间的对比度,因为照片通常比人类感知更强调这种对比度。

图 24-16. 使用渐变路径近似图像区域
为了软化边缘,使用填充和描边对话框对形状进行一点模糊处理(不超过 2%)。为了添加一些自然纹理,在形状上绘制一个 40%灰色、10%不透明的矩形,并对其应用滤镜 ▸ 叠加 ▸ 斑驳;在滤镜编辑器对话框中,增加随机纹理的频率(扰动中的基本频率)。即使只使用这些简单的滤镜,绘图也开始呈现出轻微的摄影效果。

图 24-17. 模糊和纹理化背景
然而,我们的工作还远未完成。我们创建的只是一个粗糙的背景图层,精细的细节将叠加其上,以重现玫瑰花瓣的特征皱纹和纹理。你现在的主要工具将是具有相对较小宽度、零固定和一定颤动效果的钢笔工具(14.3 钢笔工具)。通常,你会用半透明的黑色或白色进行阴影和亮部的绘制,相应地;你也可以尝试使用饱和度较低的互补色版本(例如,浅绿色用于红色背景),这通常会产生更“自然”的效果。
当然,这些层叠的半透明笔触也需要进行模糊处理。然而,不要单独对每一笔进行模糊处理;这样做会很繁琐(与不透明度不同,模糊效果不会保留在工具的样式设置中,因此不会自动应用于下一个创建的对象)并且渲染速度会变慢。相反,先画出一笔,将其组合起来(
),然后对组合进行模糊处理,接着进入该组合(
)。现在,你使用钢笔工具或任何其他工具创建的每个新对象都会被添加到模糊组中,因此会与它的兄弟对象一起模糊。当你完成组合内的绘制后,使用
离开组合。

图 24-18. 添加手绘前景笔触
特别注意你“照片”中物体的边缘——通过适当强调这些边缘的密集高光和阴影是绘制具有吸引力的绘画效果的要点。特别是,在亮部的边缘使用稍微强烈一些的高光,在阴影的边缘使用稍微强烈一些的阴影,通常是一个好主意。
24.5 处理方法 5:地图
这种最后的处理与其说是一个实际有用的技术示例,不如说是对非常直接的东西的一种创造性重新诠释。当我注意到,当我丢弃填充颜色并给最终形状分配虚线轮廓时,这个原始照片区域的八色 Potrace 追踪(路径 ▸ 追踪位图,18.8.2 追踪位图对话框)获得了有趣的地图般外观时,我只是在玩这个追踪:

图 24-19. 追踪源照片
剩下的工作就是创建一个带有黄色调、略微粗糙的(过滤器 ▸ ABCs ▸ 粗糙化),半透明的背景矩形(这样背景绘画可以稍微透出来),以模仿旧地图的表面,并添加一些神秘的文字标签来完善画面。
作为最后的修饰,我在包含各种处理的五个正方形上添加了点状边框。最终的图像就在这本书的封面上。
附录 A. SVG 入门
本附录对 SVG 及其在 Inkscape 中的实现提供了一个非常高级的概述。其中一些内容已在其他章节中提及。然而,本书并不打算取代官方的 SVG 规范。如果您需要一个关于 SVG 的绝对最终、完整和权威的参考,您需要 W3C 生产的 SVG 规范。该规范的可用版本可以在w3.org/Graphics/SVG找到;Inkscape 目前支持的版本 1.1 可以在w3.org/TR/SVG11找到。
对 SVG 的了解,以及更广泛的 XML(SVG 只是 XML 的一个特殊种类)的知识,对于掌握 Inkscape 并不是严格必要的——但它确实很有帮助。它将允许你窥视 Inkscape 绘图的内部,并且它通常会揭示 Inkscape 的一些功能(或缺乏功能)背后的真正原因。由于 XML 现在被广泛使用,本附录的材料也可能在许多不涉及 Inkscape 和 SVG 的其他情况下对你有用。
A.1 XML 快速入门
现在,几乎每个人都至少听说过 XML,当然每个人都使用过它,尽管通常是无意中。如果你看过网页的源代码,你已经知道 XML 的样子,因为今天在网络上使用的标记语言 XHTML 是 XML 的一个亚种(更准确地说,是一个XML 词汇)。SVG 是另一个这样的词汇。
XML 是一种在纯文本中记录结构化信息的标准方式。它的最大优点是它对计算机来说易于解析,同时对人来说又相当容易理解。与大多数其他通常像你想的那么复杂(或者更复杂)的计算机相关概念不同,XML 是一个不可思议的简单事物。事实上,简单到我现在可以用几个简短的段落来解释它。
XML 文档的基本构建块被称为元素。以下是一个包含一些文本的元素的示例:
<example>Here goes some text.</example>
元素内的文本称为其内容,该内容由标签界定。在小于号(<)和大于号(>)之间的所有内容都是一个标签。在这里,开始标签和结束标签几乎完全相同,除了结束标签在元素名称之前有一个正斜杠(/),在这个例子中是example。
一个元素可能完全没有内容:
<example></example>
或者
<example/>
这两个空元素完全等价;第二个,由一个标签组成,只是第一个的拼写变体。注意单标签空元素中正斜杠(/)的不同位置。
除了文本之外,元素还可以包含其他元素,但这些元素必须完全位于包含元素内。例如,这是错误的:
<a><b></a></b>
因为元素b在a内部开始,但在外部结束。如果一个元素在某个其他元素内部开始,它也必须在那个元素内部结束。以下是一个正确的 XML 示例:
<a><b/><c/><d><e/></d></a>
可以说,a 是 b、c 和 d 的父元素,而 d 是 e 的父元素。一个元素可以有多个子元素,但它只有一个父元素(除了文档的根元素,它根本没有任何父元素)。图 A-1 是这个 XML 片段的图形表示。

图 A-1. 表示 XML 代码的树
注意
这解释了为什么 Inkscape 中的对象组不能包含来自不同层的对象(4.5 组)。组是其子元素的父元素,但层也是。组可以包含在单个层中,但你不能将其分散在几个层中,因为这会导致该组有多个父元素。
除了子元素之外,XML 元素还可以有一些属性。每个 属性 都是一个带有一些相关值的名称。属性在元素的打开标签中指定,例如:
<text type="important" font-size="10">Here is some text.</text>
注意等号 (=) 和属性值周围的引号的使用。两者都是强制性的。
注意
一个元素不能有两个同名属性。请注意,在开标签中属性的顺序永远不会影响任何事情;XML 中的属性是无序的。
最后,整个 XML 文档只是一个包含一些文本内容和子元素的单一元素(称为 根),这些子元素又可以有更多内容和更多子元素,依此类推。因此,可以将 XML 文档视为从单一根生长的树。例如,这里是一个完整的 SVG 文档,其根元素 svg 包含两个元素,分别代表一个矩形和一段文本字符串:
<svg>
<rect x="100" y="100" width="300" height="50" fill="blue"/>
<text x="100" y="150">This is a text string.</text>
</svg>
A.2 词汇表和命名空间
如果这就是 XML 的全部,是什么让它如此强大并且如此广泛使用?
XML 本身只是一个基础,在这个基础上已经、正在以及无疑将会建造起许多建筑。你不会相信在 XML 出现之前,为了每个应用程序发明新的数据格式、制定规则、编写和测试支持这些格式的软件、以及处理不可避免的错误、异常和版本不兼容性,浪费了多少宝贵的程序员资源。
所有这些痛苦现在都已过去。现在,如果你需要记录一些数据,你不需要深入了解哪些字符有特殊含义以及各种字段的尺寸。通过选择 XML(你会有充分的理由不选择它),你可以专注于真正重要的事情:你数据的结构以及如何命名元素和属性,以便最好地表达这种结构。
此外,如今你甚至可能根本不需要这样做,因为你的数据可能已经存在一个众所周知的标准化 XML 词汇表,你可以直接使用它。每个词汇表定义了一组元素和属性,详细说明了它们的含义,它们可能或可能不在什么上下文中使用,哪些是必需的,哪些是可选的,等等。SVG 就是这样一种词汇表;XHTML 是另一种。存在许多标准化的 XML 词汇表,用于各种奇特的事物,从狗的系谱到星历表。其中许多词汇表都重复使用了其他词汇表的部分。
为了能够不混淆地混合不同词汇表的部分,XML 使用 命名空间。命名空间只是用来指示特定元素或属性来源的一种方式。例如,这里有一个来自 SVG 词汇表的 image 元素,表示 SVG 文档内部的链接位图图像:
<svg:image xlink:href="/dir/file.png" width="200" height="100"/>
你可以看到元素名称和一个属性使用了冒号(:)。冒号之前的名字部分被称为 命名空间前缀。为了找出哪个命名空间对应哪个前缀,我们必须查找特殊 xmlns 前缀属性(简称 XML NameSpace)的命名空间声明,它可能位于同一元素上,或者在其树状结构中的任何祖先元素上。通常,所有命名空间声明属性都会放在根元素上。在这种情况下,你可能会在根 svg 元素中找到 svg 和 xlink 前缀的声明:
<svg:svg ...
... >
这意味着 svg 前缀绑定到 http://www.w3.org/2000/svg 的命名空间,而 xlink 前缀对应于 http://www.w3.org/1999/xlink。在这里,命名空间是 URL,但它们不必是;唯一的要求是它们必须是全局唯一的(而 URL 只是确保这种唯一性的最简单方式)。
SVG 的命名空间 URL http://www.w3.org/2000/svg 必须与显示的完全一致。如果你的 SVG 文档中元素的命名空间前缀没有解析到 http://www.w3.org/2000/svg,那么 Inkscape 或其他任何软件都不会将文档识别为 SVG。然而,命名空间前缀可以是任意的,只要它与正确的命名空间绑定。如果这样声明,前缀甚至可以是空的:
<svg ...
... >
在具有该声明的元素内部,任何没有前缀的元素名称将被假定为 SVG 命名空间中的元素。例如,以下内容将被识别为有效的 SVG image 元素,它链接了一个 PNG 格式的外部图像文件:
<image xlink:href="/dir/portrait.png" width="200" height="100"/>
命名空间错误,例如未为前缀声明命名空间或命名空间 URL 错误,当你手动编辑 SVG 文件然后尝试将其加载到 Inkscape 中时最为常见。请注意这些错误!
A.3 根
下面是一个典型的 Inkscape SVG 文档的根 svg 元素示例,其中包含多个命名空间声明和其他属性:
<svg
sodipodi:docname="file.svg"
width="1052.3622"
height="744.09448"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0">
SVG 使用 SVG 命名空间(http://www.w3.org/2000/svg)来定义其自身元素,以及 XLink 命名空间(http://www.w3.org/1999/xlink)来定义链接属性(A.9 Linking)。在此基础上,Inkscape 还在其所属的 Inkscape 命名空间(http://www.inkscape.org/namespaces/inkscape)和其前身 Sodipodi 的命名空间(http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd)中添加了元素和属性;参见 1.6 The Life of an Open Source Application 了解 Inkscape 的简要历史。此处声明的其他命名空间用于元数据元素(关于文档的一般信息)和许可标识符(A.4 Defs, View, and Metadata)。
SVG 标准中定义在根元素上的属性只有 width 和 height(定义画布的大小),id 和 version。其余的都是命名空间声明或在自定义的 Inkscape/Sodipodi 命名空间中的属性。
此根标签指定了创建此文档的 Inkscape 版本:inkscape:version="0.46"。它还声称此文档将与之兼容的 Sodipodi 版本是 0.32(sodipodi:version="0.32"),因为在此版本之后 Inkscape 分叉了 Sodipodi。未命名空间的 version 属性指的是此文档实现的 SVG 规范版本,1.0。
Inkscape SVG 格式与 Inkscape 提供的普通 SVG 格式之间的唯一区别在于,普通 SVG 会移除 Inkscape 和 Sodipodi 命名空间中的所有元素和属性,仅保留“行业标准”的命名空间。请注意,不允许任何 Inkscape 特定的元素或属性改变文档的 外观;它们只能影响在 Inkscape 中编辑时的 行为(例如,g 元素上的属性可能告诉 Inkscape 将该元素作为一个 3D 箱子而不是一个简单的组来编辑,参见 11.3 3D Boxes)。因此,以普通 SVG 格式保存只是以牺牲一些 Inkscape 可编辑性为代价来使文件稍微小一点。如果你发现保存为普通 SVG 格式后渲染不同的文件,那么你发现了一个错误:请向开发者报告!
A.4 Defs, View, and Metadata
现在,让我们从典型的 Inkscape SVG 文档的根元素开始向下查看其中还包含什么。
首先是 defs 元素。作为 SVG 标准的一部分,它是一个存储库,用于存放那些本身不显示在画布上,但可能被其他显示元素使用的项目。这包括渐变、图案、标记(箭头,9.5 标记)、裁剪路径、蒙版、滤镜等等。它们都存储为 defs 元素的子元素。SVG 规范允许在文档的几乎任何位置放置任意数量的 defs 元素,但 Inkscape 总是在根 svg 下使用一个 defs。以下是一个包含渐变的 defs 元素示例:
<defs id="defs4">
<linearGradient inkscape:collect="always" id="linearGradient2798">
<stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop2800" />
<stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop2802" />
</linearGradient>
</defs>
将 linearGradient 元素添加到 defs 中,本身并不会在画布上产生任何变化。现在,然而,任何对象都可以引用(10.2.1 分享渐变定义)这个渐变来绘制其填充或描边。
defs 中的大多数内容即使没有可见元素使用也会保留。(唯一的例外是具有 inkscape:collect 属性且值为 always 的元素;这些元素在不再使用时将自动删除。Inkscape 经常使用此标志来标记它自己创建的各种辅助元素,并且可以安全地丢弃;它永远不会删除您未授权创建的任何内容。)
这允许您重用之前定义但后来放弃的项目,但也可能导致 defs 随着您在文档上工作并尝试各种技术而越来越大。要从 defs 中删除未使用的定义,请使用 文件 ▸ 清除 Defs 命令。不幸的是,即使这个命令也可能无法在第一次尝试中完全删除 defs 中的所有未使用内容;您可能需要退出、重新加载文档,并再次清除 defs 才能完全生效。
在 Inkscape SVG 文档内部,您将看到的下一个元素是 sodipodi:namedview。这个 Inkscape 特定的元素在其属性中包含了所有特定于该文档的选项:Inkscape 加载文档时将使用的缩放级别和滚动位置,网格的颜色和间距,各种吸附模式,当前图层,文档单位等等。在 Inkscape 中,大多数这些选项都可以通过 文件 ▸ 文档属性 命令(3.1.2 文档属性)进行设置。
<sodipodi:namedview inkscape:window-height="950"
inkscape:window-width="1280"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
bordercolor="#666666"
pagecolor="#ffffff"
inkscape:zoom="0.64306408"
inkscape:cx="836.6226"
inkscape:cy="619.40089"
inkscape:current-layer="layer2"
showguides="true" />
最后,在文档的实际内容开始之前,是 metadata 元素。它存储有关文档作者、目的、日期、许可等信息。它对应于 Inkscape 中的 文件 ▸ 文档元数据 对话框。metadata 内部的元素通常将信息表示为 RDF(见 w3.org/RDF)。RDF 可能会使用许多额外的 XML 命名空间来描述不同类型的信息。
A.5 图层和组
在metadata元素之后,SVG 文档的实际可见内容开始。正如你可能猜到的,每个文档对象对应一个 SVG 元素。此外,文件中元素的顺序对应于对象在画布上视觉堆叠的顺序(4.3 Z-Order):文件末尾靠近的元素位于靠近开头的元素之上。
当你将几个元素组合在一起(4.5 组)时,它们被放置在一个g元素内部。例如,这里有一个包含矩形和文本对象的组:
<g id="g2893">
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150"
style="opacity:1;fill:#ff0000;stroke:#000000;stroke-width:1px;" />
<text id="text2889"
y="400"
x="200"
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;
stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve">Text in rectangle</text>
</g>
除了组之外,另一种组织你的对象的方法是使用图层(4.6 图层)。SVG 没有专门用于图层的元素类型;相反,Inkscape 只是使用一个 SVG g元素,并添加一个特殊属性,以便在编辑文件时将其作为图层处理。
<g inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
...contents of the layer...
</g>
由于图层是组的特殊情况,因此很容易理解 Inkscape 如何“进入一个组”,将其临时作为图层处理(4.6.1 图层层次)。这也解释了为什么在将 Inkscape 的 SVG 文件导入到另一个矢量编辑器(如 Adobe Illustrator)时,你通常会丢失图层,但对象会得到额外的分组图层:其他编辑器根本不知道 Inkscape 使用某些g元素作为图层的约定,并将所有图层视为常规组。
在图层和组内部,其他 SVG 元素代表你的绘图中的实际对象。参见w3.org/TR/SVG11/eltindex.html获取 SVG 1.1 中元素的完整列表,但请注意,Inkscape 尚未支持它们中的所有元素。
A.6 坐标和单位
SVG 绘图中的距离和坐标可以用多种单位表示:厘米(cm)、毫米(mm)、英寸(in)、点(pt)以及少数其他单位。然而,有一个单位是特殊的:它是SVG 像素(缩写为px),有时称为匿名单位,因为它可以完全不写任何单位标识。例如,在这个rect元素中,x、y、width和height都是以 SVG 像素表示的:
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150" />
它们也可以用毫米来指定:
<rect id="rect2310"
y="98.777mm"
x="28.222mm"
width="84.667mm"
height="42.333mm" />
Inkscape 会正确理解这一点。然而,如果你更改并重新保存此 SVG 文件,Inkscape 会将所有大小转换回 SVG 像素。
尽管名为 SVG 像素,但它与屏幕像素并不相同。当你放大时,一个 SVG 像素的距离大于你屏幕上的一个像素;当你缩小时,它小于一个屏幕像素。然而,当你的缩放级别(显示在 Inkscape 窗口状态栏的右端,见图 2-1)为 100%时,一个 SVG 像素正好对应一个屏幕像素。这使得这个单位特别方便用于创建屏幕查看的图形。
在 Inkscape 中,90 SVG 像素等于一英寸,因此当你以 90 dpi(每英寸像素)的分辨率导出你的图形时,它将正好以 Inkscape 100%缩放时显示的样子出现。在 Inkscape UI 中,你可以指定大小或距离的大多数地方,都有一个指定单位的方法,而px单位(SVG 像素)是默认的(尽管你可以在文档属性中选择不同的默认单位)。
SVG 使用矩形笛卡尔坐标系来指定对象在画布上的位置。SVG 中的坐标原点在页面的右上角,Y 坐标向下增长。然而,在 Inkscape UI 中,原点在左下角,Y 坐标向上增长。未来的版本可能会改变这一点,最有可能的是通过使这种“坐标翻转”可选,以便于那些手动以及在 Inkscape 中编辑 SVG 的人。
A.7 变换
SVG 中的每个对象在画布上都有自己的自然位置。例如,对于一个矩形,这个位置由rect元素上的x和y属性定义:
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150" />
然而,SVG 最有趣的特点之一是,这个位置可以受到transform属性的影响。通常,这个属性包含一个matrix(...)内的六个数字序列:
<rect transform="matrix(0.96333,0.26831,-0.26831,0.96333,203.200,-160.066)"
id="rect2310"
y="350"
x="100"
width="300"
height="150" />
在这种形式下,该属性代表一个仿射变换矩阵。矩阵代数的完整处理超出了本书的范围,但你应该对变换被称为仿射的概念有所了解:
-
任何移动,也称为平移(图 6-1)
-
任何缩放,包括均匀和非均匀缩放;例如,只缩放宽度或只缩放高度(图 6-2)
-
任何围绕任何中心的旋转(图 6-6)
-
任何倾斜,有时也称为剪切(图 6-7)
顺便提一下,这些变换正是选择工具可以执行的那些变换(第六章). 注意,例如,透视变换不是仿射的:它们不能通过transform属性表达,也不能由选择工具执行。
因此,具有transform属性的元素意味着:“在自然位置和大小处绘制此元素,然后根据变换指定移动、缩放、旋转或倾斜它。”
此外,元素父级(例如,包含此对象的g元素)上的transform值也会影响对象。对象及其所有祖先上的所有变换都会合并。这就是为什么,例如,当你移动或缩放一个组时,组中所有对象都会以相同的量移动和缩放,尽管只有父级g元素的transform属性被修改。
在Inkscape 首选项对话框的变换选项卡(3.1 首选项)中,有一个存储变换选项,其值为优化和保留。这决定了 Inkscape 在变换对象时的策略。如果设置为保留,它将始终记录所有对象的全部变换为transform属性,同时保留所有其他属性不变。如果设置为优化(默认),它将尽可能地将变换记录到对象的其它属性中,而不是transform。例如,当你移动一个矩形时,在优化模式下,它将改变矩形的x和y属性,而不是添加或更改其transform。然而,并非所有类型的变换和所有类型的对象都允许这种优化,因此即使在优化模式下,transform属性仍然会被创建。唯一可以优化任何类型变换且始终无需transform属性的对象类型是path。
A.8 样式
很自然地,对象的样式属性可以表示为相应元素的属性。这些属性被称为呈现属性。例如,这个矩形有蓝色填充和黑色 1 像素宽的描边:
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150"
fill="blue"
stroke="black"
stroke-width="1pt" />
然而,这仅仅是记录 XML 中样式属性的一种可能方式。另一种方式是将所有属性打包到一个名为style的单个属性中,使用冒号(:)分隔每个属性中的名称和值,使用分号(;)分隔属性:
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150"
style="fill:blue; stroke:black; stroke-width:1pt" />
Inkscape 理解这两种方法,但出于历史原因,在写入 SVG 时,仅使用第二种方法,即使用单个style属性。当两者都存在时,style属性中的属性优先于呈现属性中的相同属性。
再次强调,这个附录不会列出 SVG 使用的所有样式属性(参见w3.org/TR/SVG11/propidx.html以获取完整列表),但你至少应该在看到它们时能够识别它们。
SVG 规定,大多数(但不是全部)样式属性应该由子元素从其父元素继承,前提是子元素没有为该属性指定自己的值。例如,如果一个矩形没有指定 fill 属性,但其父元素 g 有 fill="blue",则矩形将被涂成蓝色。在 Inkscape 中,这种继承很少发挥作用,因为通常情况下,对象的大部分属性是否更改都设置了。然而,对于 fill 和 stroke 属性,有一种方法可以通过 UI 移除或取消设置这些属性,从而使得可以从父元素继承这些属性(8.1.1 绘画)。
A.9 链接
通常,SVG 中的元素需要相互引用或链接。这在画布上的可见元素使用 defs 中的某些定义时最为常见。例如,如果你有一个填充线性渐变的矩形,rect 元素仅描述矩形本身。其渐变由文档中的另一个元素描述,称为 linearGradient,位于 defs 中,并且矩形链接到该渐变定义。
为了能够链接,一个元素必须有一个 id 属性,其值在此文档中是唯一的。Inkscape 自动为所有元素提供唯一的 id。链接到元素的 URL 简单地是其 id 前面加上一个井号(#)——例如,#linearGradient2128。为了从 style 属性中使用此 URL,你需要将其括在括号中,并以前缀字符串 url 开头。例如,这里有一个 linearGradient 元素和一个矩形,它通过其 fill 属性链接到它:
<defs>
<linearGradient id="linearGradient2128">
<stop id="stop2286" offset="0" style="stop-color:#0000ff;stop-opacity:0;" />
<stop id="stop2284" offset="1" style="stop-color:#0000ff;stop-opacity:1;" />
</linearGradient>
</defs>
...
<rect id="rect2310"
y="350"
x="100"
width="300"
height="150"
style="fill:url(#linearGradient2128)" />
链接并不总是通过样式属性来完成的;例如,SVG 标准规定渐变可以相互链接以共享颜色停止和其他属性。在这种情况下,使用 xlink:href 属性(换句话说,XLink 命名空间中的 href 属性)。(XLink 是另一个 W3C 标准,与 SVG 分开,并在许多 XML 词汇表中用于链接;有关规范,请参阅w3.org/TR/xlink。) xlink:href 属性使用不带 url() 包装器的纯 URL;例如,xlink:href="#linearGradient2128"。
SVG 允许你链接到同一文档中的其他元素,也可以链接到其他文档,无论是本地还是互联网上的,以及它们内部的元素。截至版本 0.47,Inkscape 还不支持此类跨文档链接到 SVG 文档,尽管它可以链接到用作文档中位图对象的外部位图文件。
A.10 对象类型
Inkscape 最重要的一项功能是它能够创建各种对象类型,每个对象都记住其类型并提供针对该类型的各种控制和行为(第十一章)。其中一些对象类型直接由 SVG 支持;例如,Inkscape 的矩形由 SVG 的 rect 元素表示。但其他类型是 Inkscape 独有的;例如,SVG 没有专门用于螺旋线、星形或 3D 箱子的元素。Inkscape 如何使用这些对象类型同时保持与标准 SVG 的兼容性?
解决方案是 sodipodi:type 属性。Inkscape 将星形保存为一个通用的 path 元素,它可以表示任何形状,但通过添加 sodipodi:type 来表明它实际上是一个星形,以及一些其他存储各种星形特定参数的扩展属性。同时,path 的标准 d 属性提供了星形形状的精确表示:
<path sodipodi:type="star"
style="fill:#ff0000;"
sodipodi:sides="5"
sodipodi:cx="342.85715"
sodipodi:cy="703.79077"
sodipodi:r1="105.75289"
sodipodi:r2="40.397606"
sodipodi:arg1="0.90027477"
sodipodi:arg2="1.5285933"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 408.571,786.647 L 344.561,744.152 L 284.362,791.893
L 304.997,717.884 L 240.990,675.383 L 317.754,672.139
L 338.395,598.132 L 365.202,670.135 L 441.965,666.897
L 381.770,714.642 L 408.571,786.647 z" />
当加载包含此类元素的文档时,Inkscape 识别 sodipodi:type,并在编辑时将对象视为星形而不是路径。然而,当任何其他 SVG 软件加载相同的文件时,它将忽略任何 Inkscape 特定的属性,并将此元素解释为一个简单的路径,尽管它看起来与 Inkscape 中创建的星形完全相同。换句话说,虽然只有 Inkscape 能够编辑星形作为星形,但使用标准 path 作为此对象类型的基础确保它与任何 SVG 软件保持兼容。
A.11 Inkscape SVG 扩展
为了总结这个必要但非常肤浅的附录,让我们列出在 Inkscape SVG 文件中看到的最重要扩展元素和属性列表。其中一些已在前面的章节中讨论过;其他一些在这里需要简要说明。
有一点需要重复强调:这些额外的元素和属性并不会使 Inkscape 文档无效的 SVG。XML 中的 X 代表“可扩展”是有原因的:从 XML 一开始,自由混合不同词汇的能力就是其目标之一。在我们的例子中,这意味着任何 Inkscape SVG 文件都必须——并且确实——在所有符合 SVG 渲染器的软件中完全相同地渲染。(这里有一个不幸的例外,我们将在15.2.2.3 SVG 兼容性中讨论。)
-
inkscape:collect属性被添加到defs中那些可以自动删除的元素中(A.4 Defs, View, and Metadata)。 -
sodipodi:namedview元素是 Inkscape 存储每个文档首选项的地方,如A.4 Defs, View, and Metadata中所述。 -
sodipodi:type属性是 Inkscape 使用来标记非 SVG 类型对象的(A.10 对象类型)。具有此属性的元素通常有一系列其他 Inkscape 特定的属性,用于存储特定于该对象类型的各种参数。 -
当你拖动一个对象的旋转中心时,
inkscape:transform-center-x和inkscape:transform-center-y属性会被设置在对象上(6.4 旋转中心)。Inkscape 会记住每个对象旋转中心改变后的位置。 -
sodipodi:nodetypes属性是 Inkscape 存储你使用节点工具编辑的路径上所有节点类型的地点。将节点分类为平滑、对称和尖点(12.5.5 节点类型)是 Inkscape 允许你做的,但 SVG 没有提供这样的规定;因此需要扩展属性。 -
在
g上的inkscape:groupmode属性是区分 Inkscape 中的组和层的关键(A.5 层和组)。对于层,此属性存储的值是layer。 -
可以在任何元素上设置
inkscape:label属性,为相应的对象提供可读性标签(使用id属性作为该目的的问题是它不能包含空格和标点符号;inkscape:label没有这些限制,4.1 对象属性)。在此属性中,Inkscape 存储层的可读性名称。 -
inkscape:export-filename属性可以设置在任何元素上,它存储了将此对象最后导出为位图的文件名(包括路径)。此值会自动放置在 导出位图 对话框的 文件名 字段中(18.9.1 导出位图对话框),因此即使你关闭并重新打开文件,也可以快速重复导出到相同的文件。 (这也解释了为什么 Inkscape 声称文件已更改并需要重新保存,在你从该文件导出位图之后。)
附录 B. 导入和导出
本附录是关于 Inkscape 支持的各个主要导入和导出格式的功能、限制和先决条件的笔记集合。
注意
对于导入某些格式,Inkscape 使用外部软件组件,如果你想要使用此格式,则需要下载并安装这些软件。一般来说,如果你没有安装此外部软件(或者它不在PATH中),Inkscape 将简单地从打开或导入对话框中支持的格式列表中省略此格式。
B.1 保存与导出
虽然这主要是一个术语约定,但 Inkscape 仅在导出位图对话框中使用“导出”(18.9.1 导出位图对话框)中,而支持的矢量格式,包括默认的 Inkscape SVG 格式,都在保存、另存为和保存副本对话框中的另存为类型列表中列出。由于除 Inkscape SVG 之外的所有矢量格式都会丢失一些可编辑功能,甚至丢弃某些对象类别,因此以这种格式保存并尝试关闭文档将显示警告,如图 B-1 所示。

图 B-1. 数据格式警告:你正在尝试关闭一个非 SVG 文档。
如果你保存了非 SVG 文件后进行了任何更改,你可能需要再次另存为原始 SVG 文件。为了避免这种烦恼,请使用保存副本命令(
),该命令将文档以你指定的格式和文件名保存副本。该文档仍然被认为是 Inkscape SVG,如果它在最后一次 SVG 保存后没有更改,则在关闭时不会显示警告。
B.2 SVG 变体
Inkscape 使用的首选矢量格式称为Inkscape SVG;如1.4 SVG 简史中所述,它是一种(几乎)符合标准的 SVG 格式,包含一些仅影响 Inkscape 中各种对象类型可编辑性的 Inkscape 特定扩展,但不会改变它们的外观。除非你试图实现文件大小的适度增加或遇到一些与 Inkscape SVG 存在问题的有缺陷的软件,否则将其保存为纯 SVG没有太多意义。两种 SVG 版本都有压缩版本(使用.svgz文件扩展名),这些版本生成的文件更小,但在其他方面相同,并且应该被大多数 SVG 软件理解。
从 Adobe Illustrator 导出的 SVG 文件可以像通常一样在 Inkscape 中打开。然而,这些文件通常包含大量的 AI 特定内容,对于 Inkscape 来说是无用的,并且只会增加 SVG 文件的大小。建议使用扩展名 .ai.svg 而不是简单的 .svg 来保存从 AI 导出的 SVG 文件。当你用 Inkscape 打开这样的 .ai.svg 文件时,它会通过一个特殊的过滤器,该过滤器会移除 AI 特定的二进制块,并将 AI 图层转换为 Inkscape 图层。
B.3 PDF(导入、导出)
在 SVG 之后,PDF 是最强大、Inkscape 支持最好的,并且是最广泛认可的矢量格式(1.5.1.1 Adobe 的矢量格式)。由于字体支持的限制(见下一节),Inkscape 目前还不能推荐用于往返 PDF 编辑(即打开 PDF,编辑其内容,然后保存为 PDF),但 PDF 无疑是连接 Inkscape 与不支持 SVG 的软件的最佳选择。
Inkscape 的 PDF 导入 是内置的(不需要安装外部软件)并且支持最新版本的 PDF 的大多数静态功能(形状、文本、图像、渐变、不透明度等)。交互式 PDF 功能(如表单)不受支持。由于 Inkscape 无法在一个文档中包含多个页面,因此你需要指定从 PDF 文件中导入的单个页面。这个选择是当你尝试导入或打开 PDF 文件时看到的“PDF 导入设置”对话框的主要目的(图 B-2)。

图 B-2. PDF 导入选项
在对话框中,你可以浏览 PDF 文档的页面,并根据预览图像(右侧面板)选择所需的页面,该图像显示了左上角计数器中选定的页面。
此外,你可以选择性地将导入的艺术作品裁剪到 PDF 中可能定义的各种框中;例如,裁剪到媒体框(即页面大小)会隐藏 PDF 可能包含在页面区域外的任何对象(大多数 PDF 查看器根本不会显示它们,但 Inkscape 允许你发现它们)。
B.3.1 PDF 文本
当前 PDF 导入支持的最大的限制是其对字体的处理。大多数 PDF 文件都包含了嵌入的字体,Inkscape 无法使用这些嵌入的字体,也无法在导入时将文本转换为路径(在“PDF 导入设置”对话框中的“文本处理”选项只有一项,即“导入文本为文本”)。实际上,这意味着只有当导入的 PDF 文件中使用的字体安装在你的系统上时,文本才会看起来正确;否则,将使用默认字体,这不仅外观不同,而且在大多数情况下,会严重破坏文本列的间距和对齐。
另一个复杂的问题是,大多数 PDF 使用它们的PostScript 名称来引用它们使用的字体,这些名称与操作系统显示的字体名称略有不同。例如,PDF 可能引用一个名为AlbertusMT-Light的字体,而 Inkscape 列表中的相同字体被称为Albertus MT Lt。Inkscape 会尽力将 PostScript 名称转换为常规名称,但它只能为已安装的字体这样做,而且有时会失败并选择错误的已安装字体。
注意
无论字体名称转换是否成功,您都可以通过查看 XML 编辑器(4.7 XML 编辑器)中任何文本对象的 style 属性来查找导入的 PDF 中字体对象的原始 PostScript 名称。您需要的属性是 -inkscape-font-specification,例如:
-inkscape-font-specification:AlbertusMT-Light
B.3.2 PDF 导出
如前所述,Inkscape 没有针对矢量格式的单独“导出”命令;相反,您只需转到文件 ▸ 保存或文件 ▸ 另存为,然后在保存类型列表中选择 PDF 格式。在输入文件名并点击确定后,您将看到一个用于设置 PDF 导出选项的对话框:

图 B-3. PDF 导出选项
您可以导出的 PDF 版本限制为 1.4。至于字体,Inkscape 的导出比其导入更智能:在您的 SVG 文档中使用的任何字体都将作为子集(即,仅包含文档中实际使用的字符)嵌入到它产生的 PDF 中。此外,您还有选择在导出时将所有文本对象转换为路径的选项,在这种情况下,甚至 Inkscape 本身也能导入 PDF,保留文本对象的外观。
过滤器(第十七章**)的对象将被导出,而其他所有对象将被忽略。例如,在一个包含多个标志的文件中,您可以使用此选项将每个标志导出到自己的 PDF 文件中;请确保还启用 导出绘图,而不是页面,在这种情况下,“绘图”被解释为“那些将被导出的对象”。
注意
Inkscape 导入 PDF 使用 Poppler 库 (poppler.freedesktop.org)。导出 PDF 以及 PS 和 EPS 格式时,它使用 Cairo 库 (cairographics.org)。这些库正在积极开发中,Inkscape 的未来版本很可能会通过包括这些库的新版本来提高 PDF 支持。
B.4 PostScript 和 EPS(导入、导出)
曾经,PostScript 是矢量数据的交换格式。然而,现在它已经很大程度上让位给了 PDF,PDF 支持了 PostScript 的所有实用功能,同时更加丰富(最重要的是,它支持透明度)并且在软件中更容易支持。因此,每次你有选择的时候,请使用 PDF 而不是 PostScript;然而,许多旧项目和剪贴画是以 PostScript 文件的形式存在的,并且仍然存在大量过时的软件,这些软件要么根本不支持 PDF,要么在尽力理解 PostScript 的同时支持得不好。
注意
EPS 是带有一些额外限制的 PostScript,这使得它更适合导入和插入到其他文档中。EPS 文件始终是单页,始终包含所有字体和位图图像(常规 PS 文件没有嵌入内容的义务,尽管嵌入是首选的)并且其页面大小始终精确地裁剪到其内容中。
Inkscape 支持原生 PS 和 EPS 导出。对话框中的选项与 PDF 导出对话框非常相似:

图 B-4. PS 或 EPS 导出选项
您可以选择 PostScript 的级别(即版本);大多数现代软件和打印机支持 Level 3。字体始终嵌入到 PS 或 EPS 导出中(除非您选择将它们转换为路径),并且过滤器可以像在 PDF 导出中一样可选地光栅化。不透明度为零的对象也会自动光栅化(您无法抑制它),因为与 PDF 不同,PostScript 不支持矢量透明度。
对于 PS 和 EPS 导入,您必须安装额外的软件,即 Ghostscript 解释器,它将自动运行以将 PS 或 EPS 文件转换为 PDF 格式,然后将其提供给 Inkscape。您可以在pages.cs.wisc.edu/~ghost上找到适用于所有主要操作系统的版本。请确保 Ghostscript 的gs或(在 Windows 上)gs.exe可执行文件在您的PATH中;如果不是这样,Inkscape 甚至不会在打开或导入对话框中的文件格式列表中列出 PS 和 EPS。
由于从 Inkscape 的角度来看,PS/EPS 导入最终成为 PDF 导入,因此您将看到相同的 PDF 导入对话框(图 B-2**)。因此,Inkscape 将丢失 AI 特定的元数据(如图层),但至少您将获得矢量对象。
在复杂的 AI 文件中使用的功能之一是梯度网格(1.5.4 . . . 和 Inkscape)。Inkscape 可以导入它们,但由于 SVG 中没有类似的构造,它必须使用小平面色路径“瓦片”的网格来近似它们。在PDF 导入设置对话框中,您可以设置这种近似的精度;提高此参数将使导入的网格看起来更平滑,但代价是增加 SVG 文件的大小并减慢 Inkscape 的速度。
注意
导入的梯度网格,以及它们的小彩色路径网格,是 Tweak 工具中移动、绘画和重塑的便利对象(6.9 使用 Tweak 工具进行变换、8.7 颜色调整、12.6 路径调整)。
Inkscape 不支持 AI 导出,因为所有最新的 Adobe Illustrator 版本都可以无问题导入 SVG 和 PDF 文件。
B.7 CorelDRAW(导入)
对于导入 CorelDRAW 矢量编辑器生成的矢量文件(1.5.2 CorelDRAW),Inkscape 可以使用基于 Python 的开源 UniConvertor 实用程序。在 Linux 上,只需从您的发行版仓库安装包python-uniconvertor,它将获取所有必要的依赖项。在 Windows 上,UniConvertor 的副本与 Inkscape 捆绑在一起,并使用 Inkscape 自己的 Python 副本,因此您不需要安装任何东西。有关更多信息和新版本的 UniConvertor,请访问sk1project.org。
目前,UniConvertor 可以处理 CorelDRAW 文件的大部分方面,但文本对象除外。它支持的特定 Corel 格式包括:CDR(CorelDRAW 版本 7 到 X4)、CDT(CorelDRAW 模板文件)、CCX(CorelDRAW 压缩交换文件)和 CMX(CorelDRAW 演示交换文件)。
B.8 EMF(导入/导出)、WMF 和 CGM(导入)
WMF (Windows 元文件) 和 EMF (增强元文件) 是 Windows 特定的矢量格式,由一些仅限 Windows 的软件(如 Microsoft Office)用于数据交换或存储矢量剪贴画。在这些格式中,EMF 更现代,通常更可取(如果可以选择的话)。Inkscape 在 Windows 上原生支持 EMF 的导入和导出(因为它使用操作系统对该格式的支持)。
如果您拥有 UniConvertor 工具,可以在任何平台上导入 WMF 以及另一种非微软矢量“元文件”格式 CGM,该工具可以将 WMF 或 CGM 直接转换为 SVG。
B.9 XAML (导入/导出)
Inkscape 可以导入和导出 Microsoft 在其 .NET 和 Silverlight 技术中使用的 XAML (可扩展应用程序标记语言) 格式。无需额外的软件。
B.10 WPG (导入)
WPG (WordPerfect Graphics) 是一种旧的矢量格式,曾由 WordPerfect 文本处理器使用。该格式下仍存在一些剪贴画集合,因此对于矢量艺术家来说非常有用。Inkscape 可以原生导入 WPG(无需外部软件)。
B.11 DXF 和 HPGL (导出)
DXF (绘图交换格式) 是一种常用的 CAD (计算机辅助设计) 格式,用于在 AutoCAD 等软件中的计划和工程图纸。HPGL 是一种原始的矢量格式,由一些惠普绘图仪使用。Inkscape 对这些格式的导出有一些原生支持,仅限于路径和形状;导出的 DXF 或 HPGL 文件可以发送到绘图仪或乙烯基切割设备。
B.12 JavaFX (导出)
JavaFX 是来自 Sun 的一种基于 Java 的新技术,旨在为移动和桌面系统构建交互式应用程序。Inkscape 对 JavaFX 的导出有一些原生支持(仅限于路径和形状)。
B.13 ODG (导出)
OpenDocument Graphics (ODF) 是 OpenOffice 套件及其 OpenOffice Draw 应用程序等使用的格式。Inkscape 对 ODG 导出的原生支持有限,但仍然适用于与 OpenOffice 交换数据——截至本文撰写时,OpenOffice 仍然缺乏对 SVG 的适当支持。
B.14 POV (导出)
POVRay (povray.org) 是一种流行的开源 3D 光线追踪器,不是一个矢量应用程序。然而,Inkscape 可以将其绘图中的路径和形状导出为 3D 场景,然后由 POVRay 渲染;你可以手动编辑基于文本的 .pov 文件来调整角度、相机、照明等。
B.15 LATEX (导出)
旧版且功能强大的 LATEX 文档格式系统的用户会发现,Inkscape 可以使用 PSTricks 包 (tug.org/PSTricks) 直接将绘图输出到 LATEX 文档中,用于渲染图形。
B.16 位图格式 (导入/导出)
如我们在 18.9 位图导出 中所见,Inkscape 可以导出的唯一位图格式是 PNG。然而,它内置了对更多位图格式的导入支持,包括所有主要格式(PNG、JPG、TIFF、GIF 等)。
B.17 缺失了什么?
在最常请求但仍然未得到 Inkscape 支持的文件格式中,Flash (SWF) 和 Adobe Freehand 格式最为常见。为了与 Adobe Flash 或 Adobe Freehand 进行数据交换,您可以使用 SVG 或 PDF 格式,但直接支持这些重要的格式将更为理想。幸运的是,将新格式插入 Inkscape 非常简单;一旦有开源工具可以将已知格式(理想情况下是 SVG,但 PDF 也同样适用)转换为未知格式,将其集成到 Inkscape 中就变得容易了。
附录 C. 命令行
与大多数矢量编辑器不同,但与大多数开源软件一样,Inkscape 具有强大的命令行界面。它允许你从脚本或控制台执行许多任务(导出、文档修改、查询等),而无需使用 Inkscape 的图形用户界面(GUI)。
在大多数情况下,使用命令行参数命令 Inkscape 执行某些任务根本不会加载 GUI;完成任务后,Inkscape 简单地退出。这使得它运行更快,消耗更少的内存,因为不会浪费时间和内存来创建和销毁 GUI。
注意
与“正常”(GUI)应用程序相比,Microsoft Windows 将命令行程序视为二等公民。你不能创建一个既可以作为 GUI 应用程序运行又可以作为命令行应用程序运行的单一程序,因此 Windows 上 Inkscape 的开发者必须做出选择。自然,他们选择将 Inkscape 定位为 GUI 应用程序,这不可避免地损害了其命令行功能。
更具体地说,虽然 Windows 上的 Inkscape 接受命令行参数并对其执行操作,但它无法将任何内容输出到命令提示符窗口(这使得查询参数完全不可用)。此外,即使你命令的操作(如导出)可能还需要几秒钟才能完成,它也会立即将控制权返回给命令解释器。这使得在顺序脚本中使用 Inkscape 几乎不可能。还有一个小的不便之处,你必须始终为你在命令行上指定的所有文件提供完整路径。
可以将 Inkscape 重新编译为 Windows 命令行应用程序,这将使其作为 GUI 应用程序的使用性降低(每次运行此类 Inkscape 时都会打开一个单独的命令提示符窗口)。如果你需要此程序的命令行版本,请咨询网站上的 Inkscape FAQ。
C.1 加载文档
没有单独的可执行文件用于命令行任务;在 Linux 或 Mac OSX 上使用常规的 inkscape,或在 Windows 上使用 inkscape.exe,如果你给它相应的参数,它将作为命令行工具工作。命令行最简单的用法是提供你想要加载到 GUI 中的文档的文件名。例如:
$ inkscape file.svg some/other/document.svg another/file.pdf
将启动 Inkscape 的 GUI 并将两个 SVG 文档和一个 PDF 文档(自动导入)加载到三个 Inkscape 窗口中。在这种情况下,没有给 Inkscape 分配任何任务,因此它只是让你编辑文件。正如我们稍后将会看到的,其他命令行参数,通常以 -- 开头,将强制它跳过 GUI 并对文件本身执行某些操作。
C.2 导出
通常,命令行界面用于将 SVG 文档导出为其他格式。有命令行参数用于导出为 PNG(18.9 位图导出)、PS、EPS 和 PDF(1.5.1.1 Adobe 的矢量格式)。例如,导出为 PDF 简单如下:
$ inkscape --export-pdf=file.pdf file.svg
这将创建 file.pdf;不会加载 GUI,导出完成后,Inkscape 将退出。同样,您可以使用 --export-ps、--export-eps 和 --export-png。
此外,还有 --export-plain-svg 用于将文档转换为纯 SVG(1.4 SVG 的简要历史)。它可以用来去除 Inkscape SVG 文档的 Inkscape 特定元数据,也可以将任何支持的导入格式转换为 SVG(附录 B**),因此超出页面的对象在导出时不可见。您可以通过添加 --export-area-drawing 来使导出覆盖文档的所有可见对象,无论其页面大小如何。唯一的例外是 EPS,默认情况下导出绘图;对于此格式,您可以使用 --export-area-page 限制导出为页面(然而,由于 EPS 的限制,如果它们没有达到页面的边缘,则此区域将向内收缩到页面中对象的边缘)。例如:
$ inkscape --export-png=file.png --export-area-drawing file.svg
您还可以将文档中的单个对象导出,这样导出的文件只覆盖该对象的边界框。您需要通过其 id 属性指定对象(A.9 链接):
$ inkscape --export-eps=file.eps --export-id=text2054 file.svg
如果其他对象与导出对象的边界框重叠且可见,它们也会显示在导出的 PNG 文件中。要抑制它们并仅渲染所选对象,请添加 --export-id-only。对于 PDF、PS 和 EPS,这是唯一可能的模式——如果您指定 --export-id,则其他对象总是被隐藏。
对于 PNG 导出,您还可以通过指定两个角点来明确指定导出区域。例如:
$ inkscape --export-png=file.png --export-area=0:0:200:100 file.svg
将导出从点 (0, 0) 到点 (200, 100) 的区域。
对于 PNG 导出,无论使用哪种方法指定区域,您都可以将此区域“吸附”到像素网格上,即将其四舍五入到最近的整像素坐标(px)。当您以默认的 90 dpi 导出时,这非常有用,您希望绘制的对象在导出的位图中清晰可见,无论导出哪个区域(7.2 网格)。
C.2.2 尺寸和分辨率
对于 PNG 导出,您还可以指定导出位图的尺寸或其分辨率(默认为 90 dpi)。例如:
$ inkscape --export-png=file.png --export-dpi=600 file.svg
$ inkscape --export-png=file.png --export-width=1000 file.svg
$ inkscape --export-png=file.png --export-height=400 file.svg
第一行将以 600 dpi 的分辨率导出,因此宽度为 1.1 英寸的文档将导出为 1800 像素宽的位图。其他两个示例明确设置了导出的像素大小,分辨率被计算以匹配这一要求。
C.2.3 背景
在所有导出格式中,没有对象的区域都导出为透明。然而,在 PNG 导出(但不是 PDF、PS 或 EPS)中,你可以在导出时指定任何背景颜色或透明度。例如,如果你想有一个不透明的黑色背景,使用:
$ inkscape --export-png=file.png --export-background=#000000 \
--export-background-opacity=1.0 file.svg
注意
在这个例子中,\字符表明命令行被折行以供显示;你应该将其作为单行输入,不要使用\。
C.2.4 导出提示
每次你通过 GUI 将单个选定的对象导出到 PNG(18.9 位图导出),导出文件名和分辨率将被记录到文档中添加的导出提示中。如果在之后保存文档并包含这些提示,它们可以稍后用于命令行导出到 PNG。例如,如果你编写:
$ inkscape --export-id=text2035 --export-use-hints file.svg
只有具有 ID text2035的对象将被导出到相同的文件中,并且具有最近从 GUI 导出时的相同分辨率。请注意,指定文件名的--export-png不存在,因为名称是从导出提示派生出来的。
C.2.5 矢量导出选项
对于 PDF、PS 和 EPS,有更多的导出选项,这些选项对应于这些格式在 GUI 导出对话框中的某些选择。因此:
$ inkscape --export-pdf=file.pdf --export-text-to-path file.svg
在导出时将所有文本对象转换为路径,因此生成的矢量文件不需要也不嵌入字体,而:
$ inkscape --export-pdf=file.pdf --export-ignore-filters file.svg
将忽略任何过滤器,将过滤后的对象导出为未过滤的样子,而不是将其转换为位图(这是默认操作)。
C.3 查询
SVG 的文本性质使得使用简单的脚本生成和编辑 SVG 文档变得非常容易。然而,无论你的脚本打算做什么,你可能会发现有必要找出一些 SVG 对象的外接矩形(例如,检查从数据库插入到 SVG 中的文本是否适合提供的空间,或者为特定对象创建背景矩形或框架)。在一般情况下,正确计算外接矩形非常复杂,无法在脚本中完成——如果你想要考虑可能影响外接矩形的所有因素,你将不得不重新实现 Inkscape 的大量几何和渲染代码。
幸运的是,你不必做所有这些,你只需简单地询问 Inkscape。例如:
$ inkscape --query-width --query-id=text1256 file.svg
45.2916
在这里,我们要求 Inkscape 告诉我们具有id="text1256"的对象的宽度(以px单位)。它加载了文档,找到了该对象,将其宽度打印回控制台,然后退出。
同样,你可以使用--query-height、--query-x和--query-y来找出对象的边界框的尺寸和坐标。这样的 Inkscape 调用速度相当快,因为它们不加载 GUI 也不渲染文档;然而,如果你需要查询许多对象的边界框,这可能会导致相当大的延迟。在这种情况下,最好使用--query-all参数,它返回文档中所有对象的边界框编号,如下所示:
$ inkscape --query-all file.svg
svg2,-55.11053,-29.90404,328.3131,608.6359
layer1,-55.11053,-29.90404,328.3131,608.6359
image2372,-8.917463,349.8089,282.12,212.6382
text2317,-39.85518,454.3014,20.40604,13.32647
tspan2319,-32.58402,454.3014,12.79618,4.989286
tspan2408,-39.85518,462.4921,20.40604,5.135838
path2406,-16.43702,386.617,6.34172,154.7896
text2410,-46.11609,376.8753,34.34841,5.135838
tspan2414,-46.11609,376.8753,34.34841,5.135838
text2418,-55.11053,365.9197,43.02429,5.135838
在这里,每一行都是一个以逗号分隔的列表:对象 ID、x、y、宽度和高度。在你的脚本中解析这样的行应该是容易的。
C.4 Shell 模式
为了节省加载时间(即使没有 GUI,Inkscape 仍然需要一些时间来启动),你可以使用一个程序实例在 shell 模式下执行多个命令行任务。例如,这可以用于服务器,其中 PNG 导出请求来自用户,并通过 shell 模式的 Inkscape 实例快速响应。
要进入 shell 模式,使用单个参数--shell运行 Inkscape。你将得到一个提示,可以在其中输入你的命令。shell 模式的命令没有特殊的语法;每个命令只是 Inkscape 的有效命令行调用,但不包括 Inkscape 程序名称。例如,如果你这样做:
$ inkscape --export-pdf=file.pdf file.svg
那么在 shell 模式下,你可以输入--export-pdf=file.pdf file.svg作为 shell 命令。以下是一个 shell 模式会话的示例,其中一份文档导出为 PDF,另一份导出为 PNG:
$ inkscape --shell
Inkscape 0.47 interactive shell mode. Type 'quit' to quit.
>file.svg --export-pdf=file.pdf
>otherfile.svg --export-png=bitmap.png
Background RRGGBBAA: ffffff00
Area 0:0:744.094:1052.36 exported to 744 x 1052 pixels (90 dpi)
Bitmap saved as: bitmap.png
>quit
C.5 动词
Inkscape 的命令行不仅限于无 GUI 的导出、转换和查询任务。你还可以通过--verb命令行参数脚本来执行某些常规编辑任务。这是通过--verb命令行参数完成的,它使 Inkscape 以通常的方式(带有 GUI)启动,并在你使用--select选择的对象上运行指定的动词序列。完成后,Inkscape 不会退出(除非你使用FileQuit动词),而是简单地停止并允许用户继续编辑。
一个动词通常对应于你从菜单中选择的一个命令。然而,这并不是一对一的映射;一些动词无法通过菜单访问。另一方面,许多动词需要用户进一步的交互,例如在对话框中调整参数;在你的脚本中使用它们除了作为最后一步之外几乎没有意义,这样用户就可以“从这里继续”。
要获取你版本 Inkscape 支持的动词的完整列表(0.47 版本中有超过 750 个动词),请使用--verb-list选项运行 Inkscape。以下只是列表的顶部,显示了一些在脚本中常用到的动词。动词名称在“:”之前,后面跟着一个简短的描述:
$ inkscape --verb-list
FileNew: Create new document from the default template
FileOpen: Open an existing document
FileSave: Save document
FilePrint: Print document
NextWindow: Switch to the next document window
PrevWindow: Switch to the previous document window
FileClose: Close this document window
FileQuit: Quit Inkscape
EditCut: Cut selection to clipboard
EditCopy: Copy selection to clipboard
EditPaste: Paste objects from clipboard to mouse point, or paste text
EditPasteStyle: Apply the style of the copied object to selection
EditPasteSize: Scale selection to match the size of the copied object
除了常规的 Inkscape 命令外,所有预设过滤器(17.3 预设过滤器) 和扩展(13.3 路径扩展) 每个都有两个动词:一个与从菜单中运行此过滤器或扩展相同(可能显示或可能不显示带有参数的对话框);另一个,在末尾附加 .noprefs,始终在没有对话框的情况下运行,使用默认值。例如:
org.inkscape.effect.filter.filter2573v: Glossy clumpy jam spread
org.inkscape.effect.filter.filter2573v.noprefs: Jam spread (No preferences)
org.inkscape.text.uppercase: UPPERCASE
org.inkscape.text.uppercase.noprefs: UPPERCASE (No preferences)
当然,对于脚本编写来说,.noprefs 变体更可取。
通常情况下,在命令行脚本中,一个或多个 --verb 参数前面会有一个 --select 参数,该参数通过对象的 ID 来选择某些对象。你可以指定多个 --select 参数来选择多个对象。如果你想要一次性对所有对象执行某些操作,或者逐个对象执行,你不需要 --select;相反,只需使用动词 --verb=EditSelectAll 或通过 --verb=EditSelectNext 迭代对象。
这里有一些示例。打开文档,选择所有对象,将它们转换为路径,保存文档,并退出:
$ inkscape a.svg --verb=EditSelectAll --verb=ObjectToPath --verb=FileSave \
--verb=FileQuit
打开文档,通过 ID 选择一个特定的组,取消组合,保存,并退出:
$ inkscape a.svg --select=g2038 --verb=SelectionUnGroup --verb=FileSave \
--verb=FileQuit
打开文档,通过 ID 选择一个对象,复制它,选择另一个对象,粘贴样式,移除它可能有的任何过滤器,应用一个 像素模糊 预设过滤器,保存,并退出:
$ inkscape file.svg --select=text2328 --verb=EditCopy --verb=EditDeselect \
--select=text2322 --verb=EditPasteStyle --verb=RemoveFilter \
--verb=org.inkscape.effect.filter.filter3707-6-6-0.noprefs \
--verb=FileSave --verb=FileQuit
C.6 获取帮助
要获取你版本 Inkscape 所知命令行参数的简要列表,请使用 --help 运行它。更详细的信息可以从 Inkscape 的用户界面中的 帮助 ▸ 命令行选项 获取(这将在网页浏览器中打开并从互联网上获取页面)或者通过在命令行中输入 man inkscape(仅限 Linux)。
一个非常有用的参数(尤其是如果你打算向 Inkscape 开发者报告错误或请求功能的话)是 --version,它会打印出确切的版本号,甚至你的 Inkscape 复制版本的 SVN 修订号。
附录 D. 键盘快捷键
D.1 工具
, ![]() |
选择工具 (5.4 通过点击选择:选择工具) |
|---|---|
![]() |
选择工具(临时) |
切换到选择工具临时;另一个
切换回。您可以通过在 Inkscape 预设 中开启 按下空格键时使用左鼠标键平移画布 选项来使用
-拖动画布,而不是切换到选择工具。
, ![]() |
节点工具 (12.5 节点工具) |
|---|---|
, ![]() |
调整工具 (6.9 使用调整工具进行变换, 8.7 颜色调整, 12.6 路径调整) |
, ![]() |
缩放工具 (3.9 缩放工具) |
, ![]() |
矩形工具 (11.2 矩形) |
, ![]() |
3D 箱工具 (11.3 3D 箱) |
, ![]() |
椭圆工具 (11.4 椭圆) |
, ![]() |
铅笔工具 (14.2 铅笔工具) |
, ![]() |
钢笔工具 (14.1 钢笔工具) |
, ![]() |
草书笔工具 (14.3 草书笔工具) |
![]() |
橡皮擦工具 (5.8 触摸选择, 14.3.6 添加和减去) |
, ![]() |
油桶工具 (14.4 油桶工具) |
, ![]() |
渐变工具 (10.1 渐变工具) |
, ![]() |
吸管工具 (8.6 吸管工具) |
, ![]() |
文本工具 (第十五章) |
, ![]() |
螺旋工具 (11.6 螺旋) |
, ![]() |
星形工具 (11.5 星形和多边形) |
, ![]() |
连接工具 (1.2 你可以用 Inkscape 做什么?) |
双击工具按钮将打开 Inkscape 预设 对话框 (11.1.2 新形状的样式),显示相应工具的页面。
D.2 对话框
D.2.1 打开
![]() |
填充和描边 (8.1.1 绘画) |
|---|---|
![]() |
调色板 (8.3 调色板) |
![]() |
文本和字体 (15.4.2 字体和变体) |
![]() |
变换 (6.7 变换对话框) |
![]() |
图层 (4.6.4 图层对话框) |
![]() |
对齐和分布 (7.4 对齐, 7.5 分布) |
![]() |
对象属性 (4.1 对象属性) |
![]() |
撤销历史记录 |
![]() |
XML 编辑器 (4.7 XML 编辑器) |
![]() |
文档属性 (3.1.2 文档属性) |
![]() |
Inkscape 首选项 (3.1.1 Inkscape 首选项) |
![]() |
导出位图 (18.9.1 导出位图对话框) |
![]() |
查找 (5.12 查找对象) |
![]() |
跟踪位图 (18.8.2 跟踪位图对话框) |
![]() |
路径效果编辑器 (13.1.2 路径效果编辑器对话框) |
这些快捷键如果对话框尚未打开,则会打开一个新的对话框窗口;否则,对话框将被激活。
D.2.2 切换可见性
![]() |
切换对话框 |
|---|
这将暂时隐藏所有打开的对话框;另一个
可以再次显示它们。
D.2.3 在对话框内
![]() |
将焦点返回到画布 |
|---|---|
, ![]() |
关闭对话框 |
![]() |
跳转到下一个小部件 |
![]() |
跳转到上一个小部件 |
![]() |
设置新值 |
![]() |
在 XML 编辑器中设置属性值 |
当在 XML 编辑器 (4.7 XML 编辑器) 中编辑属性值时,
将写入新值(与点击 设置属性 按钮相同)。
, ![]() |
激活当前按钮或列表 |
|---|---|
, ![]() |
在多标签对话框中切换标签 |
D.3 控制栏
D.3.1 访问
![]() |
跳转到第一个可编辑字段 |
|---|
D.3.2 导航
![]() |
跳转到下一个字段 |
|---|---|
![]() |
跳转到前一个字段 |
这些操作在控制栏的字段之间导航(你离开的字段中的值如果已更改,则变为接受)。
D.4 画布 (2.2)
D.4.1 缩放 (3.8)
, ![]() |
缩放 |
|---|---|
![]() |
缩小 |
当你正在编辑文本对象时,键盘上的
/
键仍然可以缩放,除非
是开启的。
中间点击, -右键点击 |
缩放 |
|---|---|
-中间点击, |
缩小 |
-右键点击 |
|
-滚轮 |
缩放或缩小 |
要交换滚轮和
-滚轮的功能,请在 Inkscape 预设 中开启 鼠标滚轮默认缩放 选项;然后
-滚轮将滚动,而
无滚轮将进行缩放。
-中间拖动 |
缩放至区域 |
|---|---|
![]() |
激活缩放字段 |
窗口右下角的缩放字段允许你精确指定缩放级别。
D.4.2 预设缩放 (3.9)
![]() |
缩放 1:1 |
|---|---|
![]() |
缩放 1:2 |
![]() |
缩放到选择区域 |
![]() |
缩放到绘图 |
![]() |
缩放到页面 |
, ![]() |
缩放到页面宽度 |
D.4.3 缩放历史 (3.9)
![]() |
前一缩放 |
|---|---|
![]() |
下一缩放 |
使用这些键,你可以在这个会话中来回穿梭缩放历史。
D.4.4 滚动 (平移,3.10)
, , , ![]() |
滚动画布 |
|---|
通过按键滚动是 加速的—当你连续快速按下
-箭头键或按住时,它会加速。
| 中键拖动 | 平移画布 |
|---|---|
-右拖, -右拖 |
平移画布 |
| 轮 | 垂直滚动画布 |
-滚轮 |
水平滚动画布 |
当在 Inkscape 首选项 中将 按下空格键时左鼠标按钮平移 选项开启时,
-拖动也会平移画布。
D.4.5 指南、网格和吸附 (第七章)
| 拖动 | 从标尺拖动以创建指南 |
|---|
将水平或垂直标尺拖动到画布中创建新的辅助线。将辅助线拖动到标尺上可删除它。
| 拖动 | 拖动指南以移动它 |
|---|---|
-拖动 |
拖动指南(非锚点附近)以旋转它 |
-拖动 |
使用角度吸附旋转指南 |
-点击 |
删除指南 |
, ![]() |
切换指南和指南吸附 |
如果你想看到指南但不吸附到它们,请使用全局吸附切换按钮(![图片]). 当你通过拖动标尺创建新指南时,指南可见性会被打开。
, ![]() |
切换网格和网格吸附 |
|---|
如果你想看到网格但不吸附到它们,请使用全局吸附切换按钮(![图片]). 只有主键盘上的
键有效,不是数字键盘上的键。
![]() |
切换吸附开/关 |
|---|
此全局切换会影响所有工具中对网格、指南和对象的吸附。
D.4.6 显示模式 (3.11)
![]() |
切换正常/轮廓模式(仅数字键盘 ) |
|---|
D.5 调色板 (8.3)
这些键在浮动 色板 对话框和窗口底部的停靠调色板中都可以使用。
| 点击 | 在选择上设置填充颜色 |
|---|---|
-点击 |
在选择上设置描边颜色 |
| 右键点击 | 打开弹出菜单 |
| 拖动 | 将填充颜色拖动到对象上 |
-拖动 |
将描边颜色拖动到对象上 |
要通过拖动颜色到对象上来更改对象的填充或描边,该对象无需被选中。您还可以将颜色拖动到状态栏中的填充(F)和描边(S)指示器来更改选择。
D.6 文件
![]() |
创建新文档(3.2 文档模板) |
|---|---|
![]() |
打开文档(3.5 实例、文档、视图) |
![]() |
导出为 PNG(18.9.1 导出位图对话框) |
![]() |
导入位图或矢量图(18.1 导入) |
![]() |
打印文档(B.5 打印) |
![]() |
保存文档(2.9 保存和导出) |
![]() |
以新名称保存(B.1 保存与导出) |
![]() |
保存副本(B.1 保存与导出) |
![]() |
退出 Inkscape |
D.7 文档窗口(3.6 文档窗口)
![]() |
切换标尺 |
|---|---|
![]() |
切换滚动条 |
![]() |
切换全屏 |
![]() |
主菜单 |
菜单也可以通过
激活,菜单名称下划线的字母。
, 右键点击 |
下拉(上下文)菜单 |
|---|---|
, ![]() |
关闭文档窗口 |
如果这是唯一打开的文档窗口,这将关闭 Inkscape。
![]() |
下一个文档窗口 |
|---|---|
![]() |
前一个文档窗口 |
这些快捷键会正向和反向循环活动文档窗口。
D.8 图层 (4.6 图层)
![]() |
创建新图层 |
|---|---|
![]() |
移动到上层 |
![]() |
移动到下层 |
这些命令将选定的对象从一个图层移动到另一个图层。
![]() |
提升图层 |
|---|---|
![]() |
降低图层 |
![]() |
将图层提升到顶部 |
![]() |
将图层降低到底部 |
这些命令在当前图层的兄弟图层(通常是其他图层)之间移动当前图层。
D.9 对象 (第四章)
D.9.1 撤销/重复 |
, ![]() |
撤销 |
|---|---|
, ![]() |
重复 |
D.9.2 剪贴板 (4.4)
![]() |
复制选择 |
|---|---|
![]() |
剪切选择(复制然后删除) |
![]() |
粘贴剪贴板 |
这将剪贴板对象放置到鼠标光标处,或者如果鼠标在画布外,则放置到窗口的中心。当使用文本工具编辑文本时,这将把剪贴板中的文本插入到当前文本对象中。
![]() |
在当前位置粘贴 |
|---|
这将剪贴板对象放置到它们被复制的原始位置。
![]() |
粘贴样式 |
|---|
这将(复制的)对象的样式应用到当前选择上。如果选择了渐变句柄(在渐变工具中)或文本范围(在文本工具中),它们将获得粘贴的样式而不是整个对象。
![]() |
粘贴路径效果 |
|---|
这将复制的路径效果应用到当前选择中的路径/形状。
D.9.3 复制 (4.4)
![]() |
复制选择 |
|---|
新对象将精确地放置在原始对象上方并选中。如果启用了此功能(16.5 解除链接和重新链接复制对象),则复制对象可以重新链接。
D.9.4 复制 (第十六章)
![]() |
复制对象 |
|---|
复制对象将精确地放置在原始对象上方并选中。一次只能复制一个对象;如果您想一起复制几个对象,请将它们组合起来并复制组合。
![]() |
断开克隆链接 |
|---|---|
![]() |
选择原始对象 |
D.9.5 位图 (第十八章)
![]() |
创建位图副本 |
|---|
导入的位图放置在原始选择上方并选中。
![]() |
打开 Trace Bitmap 对话框 |
|---|
D.9.6 图案(10.8)
![]() |
对象到图案 |
|---|
这将选择转换为具有平铺图案填充的矩形。
![]() |
将图案应用于对象 |
|---|
每个具有图案填充的选择对象都被分割成相同的不填充对象和一个单独的图案对象。
D.9.7 分组(4.5)
, ![]() |
将选择对象分组 |
|---|---|
, ![]() |
取消选择分组 |
这只取消一个分组级别;重复按
以取消嵌套分组。
D.9.8 Z-顺序(4.3)
![]() |
将选择提升到顶部 |
|---|---|
![]() |
将选择降低到底部 |
![]() |
将选择提升一级 |
![]() |
将选择降低一级 |
D.10 路径 (第十二章)
D.10.1 对象到路径
![]() |
将选择对象转换为路径 (第十一章) |
|---|---|
![]() |
将描边转换为路径 (12.1.3 描边路径) |
D.10.2 布尔运算(12.2)
![]() |
并集 |
|---|---|
![]() |
差集 |
![]() |
交集 |
![]() |
排除(异或) |
![]() |
分割(剪切) |
![]() |
剪切路径 |
并集、差集、交集和排除的结果继承 id 属性 (A.9 链接) 以及底部对象的任何克隆。分割和剪切路径通常会产生多个对象;其中,一个继承底部源对象的 id。
D.10.3 偏移(12.4)
![]() |
将路径向内偏移(朝向中心) |
|---|---|
![]() |
将路径向外偏移(远离中心) |
默认偏移距离是 2 像素单位.^([10])
![]() |
将路径向内偏移 1 像素^([a]) |
|---|---|
![]() |
将路径向外偏移 1 像素 |
![]() |
将路径向内偏移 10 像素 |
![]() |
将路径向外偏移 10 像素 |
|
^([a]) 一个 像素 指的是屏幕上的一个像素点,这是一个相对距离,取决于你的缩放级别(3.8 基本缩放)。你可以放大以进行更精细的调整。
|
所有
,
命令在必要时将对象转换为路径,并生成常规路径。
![]() |
创建动态偏移 |
|---|---|
![]() |
创建链接偏移 |
这些命令生成一个偏移对象(13.2 动态和链接偏移),可以通过节点工具进行编辑,可以是独立的或与原始对象链接。
![]() |
选择源 |
|---|
选择链接偏移并给出此命令将选择链接偏移的源路径。
D.10.4 合并 (12.1.1)
![]() |
合并路径 |
|---|---|
![]() |
分割路径 |
D.10.5 简化 (12.3)
![]() |
简化 |
|---|
如果你连续多次快速调用此命令,它将变得越来越激进。暂停后再次调用 简化 命令将恢复默认阈值(可在 Inkscape 首选项 对话框中设置)。
^([10]) 一个 像素单位 指的是等于 1/90 英寸的绝对单位(A.6 坐标和单位)。
D.11 选择器工具(5.4)
D.11.1 选择(鼠标,5.4)
| 点击 | 选择对象 |
|---|
当你左键点击一个对象时,之前的选中状态会被取消。
-click |
切换选择 |
|---|
如果对象未被选中,则此命令将对象添加到当前选中,否则从当前选中移除对象。
| 双击 | 编辑对象 |
|---|
这会切换到对象的默认编辑工具(路径的节点工具、相应形状工具和文本工具)。对于组,双击执行进入组命令(组成为临时图层,4.6.1 图层层次结构)。在空白区域双击将切换到层次结构中的父图层(如果有的话)。
D.11.2 橡皮筋(5.7),触摸选择(5.8)
| 拖动 | 通过橡皮筋选择 |
|---|---|
-拖动 |
将对象添加到选择中 |
通常,您需要从一个空白区域开始以启动橡皮筋选择。但是,如果您在拖动之前按下
,即使您从对象开始,Inkscape 也会进行橡皮筋选择。
-拖动, -拖动 |
通过触摸选择 |
|---|
-拖动对象会选中路径接触到的对象。要使用
开始触摸选择,您必须没有任何选择;否则使用
。您可以在拖动时通过按/释放
在橡皮筋选择和触摸选择之间切换。
D.11.3 选择(键盘,5.11)
![]() |
选择下一个对象 |
|---|---|
![]() |
选择上一个对象 |
这些键按其 z 顺序选择对象(
从下到上循环,
从上到下循环)。这适用于当前图层内的对象(4.6 图层)。
![]() |
选择所有(当前图层) |
|---|
这适用于当前图层内的对象(除非您在Inkscape 首选项中更改此设置)。
![]() |
选择所有(所有图层) |
|---|
这适用于所有可见和未锁定图层中的对象。
![]() |
反选(当前图层) |
|---|
这会在当前图层中反选(取消选择所选内容及其相反内容)。
![]() |
反选(所有图层) |
|---|
这会在可见和未锁定图层中反选(取消选择所选内容及其相反内容)。
![]() |
取消选择 |
|---|---|
, ![]() |
删除选择 |
D.11.4 在组内选择(5.10),选择下级(5.9)
-点击 |
在组内选择 |
|---|
这将在点击点选择对象,而忽略该对象可能属于的任何分组级别。
-点击 |
在组内切换选择 |
|---|---|
-点击 |
选择下级 |
-点击选择点击点下方的对象(在 z 轴顺序中)。如果达到底部对象,
-点击再次选择顶部对象。因此,多次
-点击将在点击点循环 z 轴顺序堆栈。在 Linux 上,
-点击和
-拖动可能被窗口管理器保留。如果您重新配置窗口管理器以不映射
-点击,则它将可供 Inkscape 使用。如果您的键盘有一个
键,您可能希望将修改键设置为使用它而不是
。(有时您也可以使用
-点击(在组中选择下级)与
-点击相同的效果。)
-点击 |
切换到下级 |
|---|---|
-点击 |
在组内选择下级 |
-点击 |
在组内切换到下级 |
![]() |
进入组 |
![]() |
转到父组/层 |
D.11.5 移动(鼠标,6.1)
| 拖动 | 选择并移动 |
|---|
拖动对象时,如果它未被选中,则选择它,然后移动选择。
-拖动 |
移动所选对象 |
|---|
这将移动当前选择(不选择光标下的对象),无论您从哪里开始拖动。在 Linux 上,
-点击和
-拖动可能被窗口管理器保留。重新配置它,以便您可以在 Inkscape 中使用它们。
-拖动 |
限制移动到水平或垂直 |
|---|---|
-拖动 |
临时禁用吸附 |
这将在您使用网格或参考线拖动时临时禁用吸附到网格或参考线。
拖动-![]() |
放置副本 |
|---|
当使用鼠标拖动或变换时,每个
都会留下所选对象的副本。您可以在拖动时按住
以获得漂亮的“轨迹”。
D.11.6 移动(键盘,6.1)
, , , ![]() |
通过微调距离移动选择 |
|---|---|
, , , ![]() |
通过 10 倍微调距离移动选择 |
默认微调距离为 2 像素单位。
, , , ![]() |
通过 1 像素移动选择 |
|---|---|
, , , ![]() |
通过 10 像素移动选择 |
D.11.7 变换(鼠标,6.2,6.3)
点击,![]() |
切换缩放/旋转手柄 |
|---|---|
| 拖动 | 缩放(使用缩放手柄) |
| 拖动 | 旋转或倾斜(使用旋转或倾斜手柄) |
D.11.8 通过手柄缩放(6.2)
| 拖动 | 缩放 |
|---|---|
-拖动 |
保持宽高比缩放 |
-拖动 |
对称变换 |
在变换时按住
使变换围绕选择中心对称。
-拖动 |
以整数缩放 |
|---|
在缩放时按住
以限制缩放到 2、3、4 等或初始大小的 1/2、1/3、1/4 等等。
D.11.9 缩放(键盘,6.5.2)
, ![]() |
以缩放步长放大选择 |
|---|---|
, ![]() |
以缩放步长缩小选择 |
默认缩放步长为 2 像素单位。
, ![]() |
将选择缩放到 200% |
|---|---|
, ![]() |
将选择缩放到 50% |
, ![]() |
将选择向上缩放 1 像素 |
, ![]() |
将选择向下缩放 1 像素 |
缩放是围绕中心均匀进行的,因此尺寸增量应用于两个维度中较大的那个。
D.11.10 使用手柄旋转/倾斜(6.3)
| 拖动 | 旋转或倾斜 |
|---|---|
-拖动 |
瞬时倾斜角度 |
拖动倾斜(非角落)手柄时按住
可以使倾斜角度与角度步长对齐。默认角度步长为 15 度;可以在Inkscape 首选项中的步骤中更改。
-拖动 |
瞬时旋转角度 |
|---|
拖动旋转(角落)手柄时按住
可以使旋转角度与角度步长对齐。
D.11.11 旋转(键盘,6.5.3)
, ![]() |
通过角度步长旋转选择^([a]) |
|---|---|
, ![]() |
将选择旋转 90 度 |
, ![]() |
将选择旋转 1 像素 |
|
^([a]) 在 Inkscape 中,
,
,
顺时针旋转,
,
,
逆时针旋转。
|
这些命令使用旋转中心,在选择器中可拖动(默认位于几何中心)。
D.11.12 翻转(6.5.3)
![]() |
水平翻转选择 |
|---|---|
![]() |
垂直翻转选择 |
如果工具处于旋转模式(可见旋转中心),则该中心成为翻转的轴线;否则,它围绕选择的几何中心翻转。
D.11.13 旋转中心(6.4)
| 拖动 | 移动旋转中心 |
|---|
拖动中心使其与选择的中心线和边界框边缘对齐。
-拖动 |
无吸附移动 |
|---|---|
-点击 |
重置旋转中心 |
重置旋转中心将其移回到对象或选择的边界框的几何中心。
D.11.14 取消
![]() |
取消橡皮筋、移动、变换 |
|---|
在鼠标按钮仍然按下时按
取消橡皮筋选择、移动或任何类型的变换。
D.12 节点工具(12.5)
D.12.1 选择对象(鼠标)
| 点击 | 选择未选择的对象 |
|---|---|
-点击 |
选择下级 |
-点击 |
切换选择 |
D.12.2 选择节点(鼠标)
| 点击 | 选择/取消选择节点 |
|---|
点击节点以选择它;点击两个相邻节点之间的路径以选择它们。在空白区域中点击取消选择所有选中的节点(下一次点击将取消选择对象)。
-点击 |
切换选择 |
|---|
这会将节点(如果点击在节点上)或两个节点(如果点击在路径上)添加到/从节点选择中。
D.12.3 橡皮筋选择(12.5.2)
| 拖动 | 选择多个节点 |
|---|
围绕节点拖动执行橡皮筋选择;取消选择之前的节点选择。
-拖动 |
向选择中添加节点 |
|---|
通常,您需要在路径或节点上方才能启动橡皮筋。但是,如果在拖动之前按
,即使您从路径开始,Inkscape 也会执行橡皮筋选择。
D.12.4 选择节点(键盘,12.5.2)
![]() |
选择下一个节点 |
|---|---|
![]() |
选择上一个节点 |
这些键选择所选路径内的节点。
![]() |
在子路径中选择所有节点 |
|---|
如果路径有多个子路径并且已选择一些节点,则仅在已选择节点的子路径中选择所有节点。
![]() |
选择路径中的所有节点 |
|---|
这将选择整个路径中的所有节点。
![]() |
在子路径中反转选择 |
|---|
如果路径有多个子路径并且已选择一些节点,则仅在已选择节点的子路径中反转选择(取消选择已选择的,反之亦然)。
![]() |
在路径中反转选择 |
|---|
这将在整个路径中反转选择。
![]() |
取消选择所有节点 |
|---|
D.12.5 节点选择放大/缩小(12.5.2)
, , 轮滚 |
放大/缩小选择(空间) |
|---|---|
, , |
放大/缩小选择(沿路径) |
-wheel |
您的鼠标指针必须位于节点上才能放大/缩小。每次按键或滚轮点击都会选择最近的未选择节点或取消选择最远的已选择节点。
D.12.6 移动节点(鼠标,12.5.7)
| drag | 移动选定的节点 |
|---|---|
-drag |
限制为水平或垂直移动节点 |
-drag |
沿着选定的节点的句柄移动 |
这将限制移动到节点的句柄方向、它们的延续和垂直线(总共八个对齐点)。如果节点在一侧或两侧有直线,这将将其对齐到这些直线的方向和垂直线。
-drag |
暂时禁用对齐 |
|---|---|
-drag |
拖动出句柄 |
如果节点有一个缩回的句柄,请按住
以将句柄从节点中拖出。
drag-![]() |
投下副本 |
|---|
当用鼠标拖动节点时,每个
都会留下所选对象的副本。
-drag |
拖动以雕塑选定的节点(12.5.7.2 节点雕塑) |
|---|
要在不丢失压力感应轮廓的情况下停止雕塑,请先释放
,然后抬起笔。
D.12.7 移动节点(键盘,12.5.7)
, , , ![]() |
通过微调距离移动选定的节点 |
|---|---|
, , , ![]() |
通过 10 倍的微调距离移动选定的节点 |
默认的微调距离是 2 像素单位。
, , , ![]() |
通过 1 个像素移动选中的节点 |
|---|---|
, , , ![]() |
通过 10 个像素移动选中的节点 |
D.12.8 移动节点手柄(鼠标,12.5.7)
| drag | 移动节点手柄 |
|---|---|
-drag |
将手柄吸附到角度步长 |
这也将吸附到手柄的原始角度、其延伸线和垂直线。
-drag |
旋转两个手柄 |
|---|---|
-drag |
锁定手柄长度 |
,
,
在拖动手柄时可以组合使用。
-click |
收缩手柄 |
|---|
收缩的手柄长度为零;使用
-拖动将其拉回。
D.12.9 放大手柄(选中一个节点,12.5.6)
, ![]() |
通过刻度步长同时放大/缩小两个手柄 |
|---|
默认的刻度步长是 2 个像素单位。这可能适用于多个选定的节点。
, ![]() |
通过刻度步长放大左侧手柄 |
|---|---|
, ![]() |
通过刻度步长放大右侧手柄 |
, ![]() |
通过 1 个像素放大左侧手柄 |
, ![]() |
通过 1 个像素放大右侧手柄 |
除了
和
,您还可以分别使用
(逗号)和
(句号)键。
D.12.10 旋转手柄(选中一个节点,12.5.6)
, ![]() |
通过角度步长同时旋转两个手柄 |
|---|
这可能适用于多个选定的节点。
, ![]() |
通过角度步长旋转左侧手柄 |
|---|---|
, ![]() |
通过角度步长旋转右侧手柄 |
, ![]() |
通过 1 像素旋转左侧手柄 |
, ![]() |
通过 1 像素旋转右侧手柄 |
D.12.11 缩放节点(选择两个或更多节点,12.5.7.3)
这些命令将选定的节点缩放,就像它们是一个对象。如果鼠标悬停在节点上,该节点将成为缩放的轴;否则,它将围绕选定节点的几何中心缩放。
, ![]() |
通过缩放步长放大节点 |
|---|---|
, ![]() |
通过缩放步长缩小节点 |
默认的缩放步长是 2 像素单位。
, ![]() |
通过 1 像素放大节点 |
|---|---|
, ![]() |
通过 1 像素缩小节点 |
缩放是均匀围绕中心进行的,因此尺寸增量应用于两个维度中较大的那个。
D.12.12 旋转节点(选择两个或更多节点,12.5.7.3)
这些命令将选定的节点旋转,就像它们是一个对象。如果鼠标悬停在节点上,该节点将成为旋转的轴;否则,它将围绕选定节点的几何中心旋转。
, ![]() |
通过角度步长旋转节点 |
|---|---|
, ![]() |
通过 1 像素旋转节点 |
D.12.13 翻转节点(选择两个或更多节点,12.5.7.3)
这些命令将选定的节点翻转,就像它们是一个对象,围绕该对象的中心翻转。
![]() |
水平翻转节点 |
|---|---|
![]() |
垂直翻转节点 |
如果鼠标悬停在节点上,该节点将成为翻转的轴;否则,它将围绕选定节点的几何中心翻转。
D.12.14 更改段(12.5.6)
![]() |
创建线 |
|---|---|
![]() |
创建曲线 |
这些命令要求选择两个或更多相邻的节点。
D.12.15 更改节点类型(12.5.5)
![]() |
创建尖点 |
|---|
这会改变节点的类型;如果在已经形成尖点的节点上再次进行
操作,它会收缩其手柄。
![]() |
创建平滑 |
|---|
如果尖点节点与线段相邻,
会使其半平滑,其中一个手柄与段平行;另一个
会扩展第二个手柄。
![]() |
创建对称 |
|---|
在创建平滑或对称时,可以通过将鼠标悬停在其中一个手柄上将其位置锁定。
![]() |
自动调整 |
|---|---|
-click |
切换平滑/尖点/对称/自动 |
D.12.16 连接/断开(12.5.4)
![]() |
连接选定的节点 |
|---|
这要求在路径内精确选择两个端节点。可以通过将鼠标悬停在其中一个连接节点上将其位置锁定。
![]() |
断开选定的节点 |
|---|
断开连接后,每两个新节点中只有一个被选中。这可能适用于多个选定的节点。
D.12.17 删除、创建和复制(12.5.3)
, ![]() |
删除选定的节点 |
|---|---|
, ![]() |
删除时不保留形状 |
删除时如果不使用
,则调整剩余节点的手柄以尽可能保留曲线的形状。使用
删除时不会触及剩余节点。
-click |
创建/删除节点 |
|---|
-click 在节点上删除它;
-click 在节点之间的路径上会在点击点创建一个新节点。以这种方式删除节点始终尝试保留曲线的形状(与
/
相同)。
| 双击 | 创建节点 |
|---|
双击节点之间的路径会在点击点创建一个节点。
![]() |
插入新的节点 |
|---|
这会在选定的段落的中间添加新的节点,因此需要选择两个或更多相邻的节点。
|  | 复制选定的节点(s) |
|---|
新节点在相同路径上创建;它们正好位于旧节点上方并被选中。
D.12.18 反向(12.1.1)
|  | 反向路径方向 |
|---|
D.12.19 编辑形状
节点工具还可以拖动形状(矩形、椭圆、星形、螺旋)的手柄。单击形状以选择它。查看相应的形状工具,它们的编辑快捷键也适用于节点工具。
D.12.20 编辑填充和路径效果
节点工具还可以编辑图案填充、渐变填充和路径效果的编辑手柄。
D.12.21 取消
|  | 取消橡皮筋或移动 |
|---|
在鼠标按钮仍然按下时按  以取消橡皮筋选择、节点移动或手柄移动。
D.13 调整工具(6.9,8.7,12.6)
D.13.1 操作
| 拖动 | 在当前模式下对选定的路径执行操作 |
|---|---|
| -拖动 | 反转当前模式(当适用时) |
| -拖动 | 临时进入缩小模式 |
| -拖动 | 临时进入增长模式 |
D.13.2 模式
|  | 移动模式 |
|---|---|
|  | 移动/移出模式 |
拖动将对象向鼠标内部移动,使用  拖动从鼠标外部移动。
|  | 移动抖动模式 |
|---|---|
| ,  | 缩放模式 |
拖动缩放对象向下,使用  拖动向上缩放。
| ,  | 旋转模式 |
|---|
拖动顺时针旋转对象,使用  逆时针旋转。
|  | 复制/删除模式 |
|---|
拖动随机复制对象,使用  拖动随机删除。
|  | 推路径模式(12.6.3 推模式) |
|---|---|
|  | 增长/缩小路径模式(12.6.4 缩小/增长模式) |
拖动内嵌路径,使用  拖动外嵌。
![]() |
吸引/排斥路径模式 (12.6.5 吸引/排斥模式) |
|---|
拖动将路径吸引到光标处,使用
拖动则排斥。
![]() |
粗糙模式 (12.6.6 粗糙模式) |
|---|---|
![]() |
颜色绘制模式 (8.7.1 颜色绘制) |
![]() |
颜色抖动模式 (8.7.2 颜色抖动) |
![]() |
模糊模式 |
D.13.3 参数 (12.6.1)
, ![]() |
通过调整增加画笔宽度 1 |
|---|---|
, ![]() |
设置画笔宽度为 1 或 100 |
, ![]() |
调整微调力 |
绘制时可以调整宽度和力度。使用压力感应平板,力度还取决于笔的压力。
D.14 矩形工具 (11.2)
D.14.1 绘制
| 拖动 | 绘制矩形 |
|---|---|
-拖动 |
制作正方形或整数比例的矩形 |
这将限制矩形,使其高度/宽度比是一个整数。
-拖动 |
围绕起始点绘制 |
|---|
这会在鼠标拖动的起始点周围创建一个对称的矩形。
D.14.2 选择
| 点击 | 选择 |
|---|---|
-点击, -点击 |
选择下方 |
-点击 |
切换选择 |
在此工具中,通过点击选择忽略任何分组(即,相当于在选择器中使用
点击)。
![]() |
取消选择 |
|---|
D.14.3 使用手柄调整大小 (11.2.1)
| 拖动 | 通过拖动方形手柄来调整大小 |
|---|
初始时,两个调整大小(方形)手柄位于左上角和右下角。调整大小手柄在其自己的坐标系中更改矩形的宽度和高度,在应用任何转换之前。
-拖动 |
锁定宽度、高度或比例 |
|---|
D.14.4 使用手柄圆滑角落 (11.2.2)
| 拖动 | 通过拖动圆形手柄来圆滑角落 |
|---|
初始时,两个圆角手柄位于矩形的右上角。
-拖动 |
锁定角落圆形 |
|---|---|
-点击 |
设置角落圆形 |
当圆角时,如果另一个手柄保持在角落,则拖动一个圆角手柄可以保持角落圆形。您可以独立拖动每个手柄以获得椭圆形圆角,或者拖动/点击一个带有
的手柄以使其再次变为圆形。
-点击 |
移除角落圆角 |
|---|
D.15 3D 盒子工具 (11.3)
D.15.1 绘制 (11.3.2)
| 拖动 | 绘制 3D 盒子(X/Y 平面) |
|---|---|
-拖动 |
绘制 3D 盒子(在 Z 方向拉伸) |
D.15.2 选择
| 点击 | 选择 |
|---|---|
-点击, -点击 |
选择下方 |
-点击 |
切换选择 |
![]() |
取消选择 |
D.15.3 使用手柄编辑 (11.3.4)
所有编辑操作都在“视角”内进行,即沿着视角线或在这些线所跨越的平面内。
| 拖动 | 调整大小或移动盒子 |
|---|
四个前手柄和中心通常在 X/Y 平面内移动,四个后手柄沿 Z 轴移动;带有
时情况相反。
-拖动 |
调整大小或移动,手柄吸附到轴或对角线 |
|---|
D.15.4 编辑视角 (11.3.3)
| 拖动 | 拖动方形手柄以移动消失点 |
|---|---|
, ![]() |
通过角度步长旋转 X 视角线(如果平行) |
, ![]() |
通过 1 像素旋转 X 视角线(如果平行) |
, ![]() |
通过角度步长旋转 Y 视角线(如果平行) |
, ![]() |
通过 1 像素旋转 Y 视角线(如果平行) |
, ![]() |
通过角度步长旋转 Z 视角线(如果平行) |
, ![]() |
通过 1 像素旋转 Z 视角线(如果平行) |
D.16 椭圆工具 (11.4)
D.16.1 绘制 (11.4.1)
没有使用
时,鼠标拖动的起始点和结束点标记了边界框的角点。使用
时,椭圆被放大,使其周长通过这两个点(
是一个特殊情况,见下文)。
| 拖动 | 绘制椭圆 |
|---|---|
-拖动 |
创建圆形或整数比例的椭圆 |
这限制了椭圆,使其高度/宽度比是一个整数。
-拖动 |
围绕起始点绘制 |
|---|
这将在鼠标拖动的起始点周围创建一个对称的椭圆。
-拖动 |
|---|
这将创建一个完美的圆形,其直径由鼠标拖动的起始点和结束点定义。
D.16.2 选择
| 点击 | 选择 |
|---|---|
-点击, -点击 |
选择下方 |
-点击 |
切换选择 |
在此工具中,通过点击选择忽略任何分组(即,相当于在选择器中点击
)。
![]() |
取消选择 |
|---|
D.16.3 使用手柄编辑 (11.4.2)
| 拖动 | 调整大小、绘制弧或段 |
|---|
初始时,两个调整大小手柄位于最顶部和最左侧的点;两个弧/段手柄位于最右侧的点。
-拖动 |
锁定圆形(调整大小手柄) |
|---|---|
-拖动 |
捕捉到角度步长(弧/段手柄) |
调整大小手柄在其自己的坐标系中更改椭圆的宽度和高度,在应用任何转换之前。
-点击 |
完整选择(弧/段手柄) |
|---|
D.17 星形工具 (11.5)
D.17.1 绘制 (11.5.1)
| 拖动 | 绘制星形 |
|---|---|
-拖动 |
将星形捕捉到角度步长 |
D.17.2 选择
| 点击 | 选择 |
|---|---|
-点击, -点击 |
选择下方 |
-点击 |
切换选择 |
在此工具中,通过点击选择忽略任何分组(即,相当于在选择器中点击
)。
![]() |
取消选择 |
|---|
D.17.3 使用手柄编辑 (11.5.2)
| 拖动 | 拖动手柄以改变星形 |
|---|---|
-drag |
保持星射线径向(无倾斜) |
-drag |
绕星旋转 |
-click |
移除圆滑 |
-drag |
随机化星形 |
-click, -click |
移除随机化 |
D.18 螺旋工具(11.6)
D.18.1 绘制
| drag | 绘制螺旋线 |
|---|---|
-drag |
将螺旋线吸附到角度步长 |
D.18.2 选择
| click | 选择 |
|---|---|
-click, -click |
选择下方 |
-click |
切换选择 |
在这个工具中,通过点击选择忽略任何分组(即,相当于在选择器中使用
进行点击)。
![]() |
取消选择 |
|---|
D.18.3 使用手柄编辑
| drag | 从内部(内部手柄)卷起/展开 |
|---|
拖动内部手柄调整内半径参数。
-drag |
收敛/发散(内部手柄) |
|---|---|
-click, -click |
重置发散(内部手柄) |
垂直
-拖动内部手柄调整发散参数;
-click 将其重置为 1。
-click |
将内半径设为零(内部手柄) |
|---|
在内部手柄上
-click 使螺旋线从中心开始。
| drag | 从外部(外部手柄)卷起/展开 |
|---|
拖动外部手柄调整圈数参数。使用
-drag 卷起/展开而不改变半径。
-drag |
缩放/旋转(外部手柄) |
|---|
使用
仅旋转(锁定螺旋线的半径)。
-drag |
将手柄吸附到角度步长 |
|---|
这对两个手柄都适用。
D.19 缩放工具(3.9)
| click | 放大 |
|---|---|
-click |
缩小 |
| drag | 缩放至区域 |
D.20 铅笔工具(14.2)
| drag | 绘制自由手绘线 |
|---|---|
-拖动 |
添加到选定的路径 |
如果选择了路径,
-拖动到任何地方将创建一个新的子路径。
-拖动 |
暂时禁用吸附 |
|---|
在带有网格或辅助线的绘图时暂时禁用网格或辅助线的吸附。
-拖动 |
平均绘制(草图模式) |
|---|
D.21 笔(贝塞尔)工具(14.1)
D.21.1 创建节点(14.1.1)
| 点击 | 创建一个尖锐的节点 |
|---|
如果没有创建路径,这将开始一个新的路径。
-点击 |
添加到选定的路径 |
|---|
如果选择了路径,
-点击到任何地方将开始一个新的子路径。
| 拖动 | 创建一个带有两个控制点的贝塞尔节点 |
|---|---|
-拖动 |
只移动一个控制点 |
这只移动一个控制点(而不是两个)以创建节点,使其成为尖点。
-拖动 |
将控制点吸附到角度步长 |
|---|
D.21.2 移动最后一个节点(14.1.2)
这些命令在创建路径时移动最近创建的节点(红色段开始处)。
, , , ![]() |
将最后一个节点移动微调距离 |
|---|---|
, , , ![]() |
将最后一个节点移动 10 倍微调距离 |
默认微调距离为 2 像素单位。
, , , ![]() |
将最后一个节点移动 1 像素 |
|---|---|
, , , ![]() |
将最后一个节点移动 10 像素 |
D.21.3 创建/修改段
![]() |
将最后一个段固定到角度步长 |
|---|
这将新节点相对于前一个节点的角度固定到角度步长。
![]() |
将最后一个段变为直线 |
|---|---|
![]() |
使最后一段曲线 |
这些命令将路径的最后一个(红色)段变为直线或曲线。
D.21.4 创建点 (14.1.4)
这些快捷键仅在工具的直线或准平行模式中有效。
-点击 |
创建一个点 |
|---|
这将创建一个大小(相对于当前笔触宽度)可设置的小圆,在Inkscape 首选项中设置。
-点击 |
创建一个双倍大小的点 |
|---|---|
-点击 |
创建一个随机大小的点 |
D.21.5 完成
, 右键单击,双击 |
完成当前线条 |
|---|
D.21.6 取消
, ![]() |
取消当前线条 |
|---|---|
, ![]() |
删除当前线条的最后一段 |
D.22 书写笔工具 (14.3)
| 拖动 | 绘制书写笔线条 |
|---|---|
-拖动 |
添加到选定的路径 |
-拖动 |
从选定的路径中减去 |
-拖动 |
跟踪引导路径 |
, ![]() |
调整笔宽 1 单位 |
, ![]() |
设置笔宽为 1 或 100 |
, ![]() |
调整笔角度 |
绘制时可以调整宽度和角度。
![]() |
取消选择 |
|---|
D.23 填充桶工具 (14.4)
| 点击 | 填充封闭区域 |
|---|---|
-点击 |
添加到选定的路径 |
使用
点击会将新创建的填充与之前的选区合并。
| 拖动 | 从每个点填充 |
|---|
从每个点开始,填充会扩散到颜色与该点相似的所有相邻区域。这可以用来填充当前填充有渐变或模糊效果的区域。
-拖动 |
从每个点填充,与初始点相同 |
|---|
从每个点开始,填充会扩散到颜色与拖动初始点相似的所有相邻区域。这可以通过在一个区域开始并拖动到所有区域来完成,以填充多个不相交的封闭区域。
-点击 |
设置填充颜色 |
|---|---|
-点击 |
设置描边颜色 |
-点击对象将其填充(或描边与
)设置为工具的当前样式;对象不必被选中。
D.24 渐变工具(10.1)
D.24.1 选择对象
| 点击 | 选择 |
|---|---|
-点击 |
在下边选择 |
-点击 |
切换选择 |
D.24.2 创建渐变
| 拖动 | 创建渐变 |
|---|
这将在选定的对象上创建渐变。控制栏允许您选择线性/径向和填充/描边的新渐变。
| 双击 | 创建默认渐变 |
|---|
这将在点击的对象上创建默认(线性为边缘到边缘,径向为中心边缘到边缘)渐变。
D.24.3 选择手柄
| 点击 | 选择一个手柄 |
|---|---|
-点击 |
将手柄添加到选择中 |
-拖动 |
通过橡皮筋选择 |
![]() |
选择下一个手柄 |
![]() |
选择上一个手柄 |
![]() |
选择所有手柄 |
![]() |
取消所有手柄的选择 |
在所有手柄之外的单击也会取消所有手柄的选择。
D.24.4 创建/删除中间停止点(10.5.1)
| 双击 | 创建一个停止点 |
|---|---|
-点击 |
创建/删除一个停止点 |
-点击停止点的手柄将删除该停止点;如果是端点停止点,渐变会缩短;如果留下一个单独的停止点,渐变会消失成纯色。
![]() |
插入新的停止点 |
|---|
这将在选定的段中间添加新的停止点,因此需要选择两个或更多相邻的手柄。
![]() |
删除选定的停止点 |
|---|
D.24.5 移动手柄/停止点(10.5.2)
| 拖动 | 移动选定的手柄 |
|---|---|
-拖动 |
以 1/10 的范围增量移动停止点 |
-拖动选定的中间停止点将它们移动,并自动对齐到可用范围的 1/10 步长。
-拖动 |
塑造选定的停止点 |
|---|
塑造移动选定的中间停止点;每个停止点移动的距离取决于它距离被拖动的停止点的距离(类似于节点工具中的节点塑造)。
, , , ![]() |
通过微调距离移动所选句柄 |
|---|---|
, , , ![]() |
通过 10 倍微调距离移动所选句柄 |
默认微调距离为 2 个像素单位。
, , , ![]() |
通过 1 个像素移动所选句柄 |
|---|---|
, , , ![]() |
通过 10 个像素移动所选句柄 |
如果至少选择了一个端点句柄,则箭头键可以自由移动端点句柄,从而移动或调整整个梯度线的位置和大小。如果只选择了中间停止点,则箭头键将所选停止点沿梯度线移动。
D.24.6 反向(10.2)
![]() |
反向梯度定义 |
|---|
这将镜像当前梯度的停止位置,而不移动梯度句柄。
D.24.7 梯度编辑器
| 双击 | 打开梯度编辑器 |
|---|
双击梯度句柄将打开包含该梯度以及所选句柄在停止列表中的梯度编辑器。
D.25 液滴工具(8.6)
| 点击 | 选择填充颜色 |
|---|---|
-点击 |
选择描边颜色 |
| 拖动 | 平均填充颜色 |
-拖动 |
平均描边颜色 |
点击将光标下的颜色应用到当前选择。拖动半径计算圆形区域的平均颜色。如果选择了梯度工具中的梯度句柄,则该句柄将获得颜色,而不是整个对象。
-点击 -拖动 -点击 -拖动 |
选择逆色 |
|---|
如果按下
,则通过点击或拖动(带或不带
)选择颜色时,将选择颜色的反色。
![]() |
复制颜色 |
|---|
这会将光标下的颜色复制到剪贴板,格式为RRGGBBAA(八个十六进制数字)。
| # D.26 文本工具(第十五章 | 取消文本对象的选中状态 |
|---|
D.26.2 在文本中导航
, , , ![]() |
移动光标一个字符 |
|---|---|
, ![]() |
移动光标一个单词 |
, ![]() |
移动光标一个段落 |
, ![]() |
移动到行的开始/结束 |
, ![]() |
移动到文本的开始/结束 |
, ![]() |
移动光标一个屏幕 |
所有这些命令如果当前有文本选中,将取消选中。使用
来扩展选择。
D.26.3 流动文本(内部框架,15.2.2)
| 拖动 | 创建流动文本 |
|---|
在空白区域或非文本对象上单击并拖动会创建一个带有内部矩形框架的流动文本对象。
| 拖动 | 调整框架大小 |
|---|
拖动所选流动文本右下角的手柄可以更改框架的宽度和高度。
-拖动 |
锁定框架的宽度、高度或比例 |
|---|
使用
拖动角落手柄可以调整框架大小,同时保持宽度、高度或比例不变。
D.26.4 流动文本(外部框架,15.2.2.2)
![]() |
将文本流动到框架中 |
|---|
当选择文本对象和形状/路径时,此操作将文本流动到形状/路径中。两者仍然是独立的对象,但相互链接;编辑形状/路径会导致文本重新流动。
![]() |
从框架中取消流动文本 |
|---|
这会切断流动文本与形状/路径的链接,生成一个单行常规文本对象。
![]() |
选择外部框架 |
|---|
要找出流式文本的框架对象,请选择它并按
。框架将被选择。
D.26.5 路径上的文本(15.2.3)
![]() |
从文本中选择路径 |
|---|
要找出文本所在的路径,请选择它并按
。路径将被选择。
D.26.6 编辑文本
要输入 + 和 - 字符,请使用主键盘;数字键盘
和
保留用于缩放(除非
是开启的)。
![]() |
开始新行或新段落 |
|---|
在常规文本中创建新行;在流式文本中创建新段落。
![]() |
切换到 Unicode 输入模式(15.6.1 特殊字符) |
|---|
要插入任意 Unicode 字符,请输入
,然后输入十六进制代码点,然后输入
。要在插入字符后保持 Unicode 模式,请按
而不是
。按
或另一个
来取消 Unicode 模式而不插入字符。
![]() |
插入不间断空格 |
|---|
即使在没有 xml:space="preserve" 的文本对象中,不间断空格也是可见的。
D.26.7 选择文本(15.1.1)
| 拖动 | 选择文本 |
|---|
左键拖动文本对象可以选择文本范围。
, , , ![]() |
通过字符选择文本 |
|---|---|
, , , ![]() |
通过单词选择文本 |
, ![]() |
选择到行首/行尾 |
, ![]() |
选择到文本首尾 |
, ![]() |
选择上一屏/下一屏 |
| 双击 | 选择单词 |
| 三击 | 选择行 |
![]() |
选择所有文本 |
这将选择当前文本对象中的全部文本。
D.26.8 样式选择 (15.4.2)
![]() |
使选择文本变为粗体 |
|---|---|
![]() |
使选择文本变为斜体 |
D.26.9 字母间距 (15.3.4)
![]() |
扩展行/段落 1 像素 |
|---|---|
![]() |
扩展行/段落 10 像素 |
![]() |
收缩行/段落 1 像素 |
![]() |
收缩行/段落 10 像素 |
这些命令(仅在编辑文本时)调整当前行(常规文本)或当前段落(流式文本)中的字母间距。
D.26.10 行间距 (15.3.4)
![]() |
将文本对象高度增加 1 像素 |
|---|---|
![]() |
将文本对象高度增加 10 像素 |
![]() |
将文本对象高度减少 1 像素 |
![]() |
将文本对象高度减少 10 像素 |
这些命令(仅在编辑文本时)调整整个文本对象(常规或流式)的行间距。
D.26.11 字距和移动 (15.3.3)
, , , ![]() |
将字符移动 1 像素 |
|---|---|
, , |
将字符移动 10 像素 |
, ![]() |
这些命令在编辑常规文本对象时有效(不在流式文本中)。没有选择时,它们将光标后的字符(水平或垂直)移动到行尾。有选择时,它们相对于文本的其他部分移动选择(在选择的两侧插入相反的字距)。
D.26.12 旋转 (15.3.3)
, ![]() |
将字符旋转 90 度 |
|---|---|
, ![]() |
将字符旋转 1 像素 |
旋转命令仅在常规文本中有效(非流式文本)。这些命令旋转下一个字符(当没有文本选择时)或选择中的所有字符(当有选择时)。



)和将选择移动到下方图层 (
),将当前选择移动到当前图层的上方或下方图层。如果当前图层上方或下方没有图层,这些命令将不起作用,并在状态栏中显示消息。通过跨越图层边界,这些命令与在同一图层内工作的常规 z 轴顺序更改命令(如提升或降低(4.3 Z-Order))相辅相成。
)、降低图层 (
)、图层置顶 (
)和图层置底 (
)——与对象的 z 轴顺序命令(4.3 Z-Order)等价,但它们作用于当前图层,并将它(及其所有对象和子图层)在同级图层中上下移动。请注意,这些命令的键盘快捷键与对象 z 轴顺序命令相同,但增加了 
来访问。

,
,和
切换相应的消失点从有限到无限,再回到有限。








































, 
, 
, 

, 
, 


,
, 



, 





, 


, 








, 右键点击

,
, 

,
, 



-点击
-点击
-点击

,
, 
,
,
,
,
, 



, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 




, 
,
, 
,
,
, 
, 
, 
, 
, 
, 



,
,
, 
,
,
, 
, 
, 






浙公网安备 33010602011771号