定制图形


基本概念

pstricks有许多图形对象,不过它们不一定符合你的要求,这时你可以定制自己的图形 对象。定制图形对象用命令

\pscustom*[参数]{图形对象或其它命令}

在进一步学习如何定制图形对象前,我们先要了解一下Postscript语言(以下简称PS语言) 如何处理图形。路径(path)是一条数学意义上的线,而不是视觉上的。一条路径可以包含 若干不连续的片段。它可能是开放的,也可能是封闭的。PS语言中有许多构造路径的操作。 路径的末端被称为当前点。没有路径,也就无所谓当前点。为了把路径转换为视觉上可见 的东西,PS语言可能填充路径形成的封闭区域,并且用线条勾勒。

对于“\pscustom”而言,开始的时候没有路径。你可以用很多命令来构造路径。其中一些 还可以右箭头。在结束时“\pscustom”也填充和勾勒路径。

参数

设置参数时你头脑里必须把绘制、填充、勾勒这些动作分开。linewidth和linecolor参数 会影响箭头的绘制,但路径命令并不填充和勾勒路径,所以这些参数,以及linestyle、 fillstyle和相关的参数都没有其它影响(除了linewidth被用于路径相关的计算)。 “\pscustom”和“\fill”命令会利用fillstyle和相关参数,“\pscustom”和“\stroke” 命令会利用linestyle和相关参数。比如在“\pscustom”中包括了

\psline[linewidth=2pt,linecolor=blue,fillstyle=vlines]{<-}(3,3)(4,0)
linewidth和linecolor影响箭头,但对于线段没有影响,而fillstyle没有任何影响。

shadow、border、doubleline和showpoints在“\pscustom”中是无效的。origin和swapaxes 只影响“\pscustom”本身。

为了计算模式,短划线和点划线参数需要知道路径的一些信息,你可以用参数

linetype=int
来提供信息。int的值可以是 缺省值是0。

图形对象

“\psgrid”、“\psdots”、“\qline”、“\qdisk”不能在“\pscustom”中使用。 最好不要使用封闭曲线对象,可以用开放曲线加“\closepath”。“\pscustom”中 最有用的就是开放曲线。比如

\pscustom{%
\psarc(0,0){1.5}{5}{85}
\psarcn{->}(0,0){3}{85}{5}}

下列对象会利用当前点作为第一个坐标,如果有的话

比如
\pscustom[linewidth=1.5pt]{%
\psplot[plotstyle=curve]{.67}{4}{2 x div}
\psline(4,3)}

你可以控制开放曲线如何对待当前点,通过参数

liftpen=0/1/2
0是缺省值,当前点被作为第一个坐标,1表示不要把当前点作为第一个坐标, 2表示不要把当前点作为第一个坐标,并且不要在当前点和第一个坐标之间连线。 比如
\pscustom[linewidth=2pt,fillstyle=solid,fillcolor=gray]{%
\pscurve(0,2)(1,2.5)(2,1.5)(4,3)
\pscurve[liftpen=2](4,1)(3,0.5)(2,1)(1,0)(0,.5)}

安全的命令

本节所列举的命令都可以在“\pscustom”中安全地使用。

命令

\newpath
清除路径和当前点。

命令

\moveto(x,y)
移动当前点到(x,y)。

命令

\closepath
关闭一条路径。

命令

\stroke[参数]
勾勒路径。比如
\psline(0,3)(4,0)
\pscustom[linecolor=white,linewidth=1.5pt]{%
\psline(0,0)(4,3)
\stroke[linewidth=5\pslinewidth]
\stroke[linewidth=3\pslinewidth,linecolor=black]}

命令

\fill[参数]
填充路径围成的区域。

命令

\gsave
保存图形状态。

命令

\grestore
恢复图形状态。

命令

\translate(x,y)
把坐标系统平移到(x,y)。

命令

\scale{num1 num2}
在水平方向上缩放num1,在垂直方向上缩放num2。

命令

\rotate{angle}
旋转坐标系统。

命令

\swapaxes
交换坐标轴。

命令

\msave
保存当前坐标系统。

命令

\mrestore
恢复坐标系统。

命令

\openshadow[参数]
用阴影参数复制当前路径。

命令

\closedshadow[参数]
绘制路径封闭的区域的阴影,如果不透明的话。

命令

\movepath(x,y)
移动路径到(x,y)。

相对安全的命令

如果存在当前点,本节所列命令也是安全的。

命令

\lineto(x,y)
是“\psline”的快速版。

命令

\rlineto(x,y)
与“\lineto”类似,只是(x,y)相对于当前点插值。

命令

\curveto(x1,y1)(x2,y2)(x3,y3)
是\psbezier(x1,y1)(x2,y2)(x3,y3)的快速版。

命令

\rcurveto(x1,y1)(x2,y2)(x3,y3)
与“\curveto”,只是(x1,y1)、(x2,y2)、(x3,y3)相对于当前点插值。


目录