PostScript路径组合

时间:2012-07-02 22:37:29

标签: postscript

我刚开始学习PostScript以便为LaTeX生成图形,我不知道如何将路径与自身组合,因此笔划只会影响绘制形状的外边框。我的代码如下:

/black { 0 0 0 1 setcmykcolor } def
/gold { 0.02 0.17 0.72 0.05 setcmykcolor } def
newpath
  % the center is 1/2w and 1/2h
  /cx { 1200 2.0 div } def % center-x
  /cy {  600 2.0 div } def % center-y
  /r  {  600 9.0 div
               4 mul
             2.0 div } def % star's radius
  cx r   0 cos mul add
  cy r   0 sin mul add moveto
  cx r 144 cos mul add
  cy r 144 sin mul add lineto
  cx r 288 cos mul add
  cy r 288 sin mul add lineto
  cx r  72 cos mul add
  cy r  72 sin mul add lineto
  cx r 216 cos mul add
  cy r 216 sin mul add lineto
closepath
gsave
gold fill
grestore
1 setlinewidth
black stroke

绘制笔划时,绘制穿过该形状的线条。我想知道是否有办法只有形状的外边框而不是内线。我宁愿不必计算形成恒星的线相交的位置,保持5行而不是10个较小的行。

另请注意,我正在学习PS并且不想使用外部程序(阅读Illustrator等)。这个问题的目的是建立我对PostScript的了解。

2 个答案:

答案 0 :(得分:2)

最简单的方法是首先进行描边,然后进行填充。您可能希望将线宽加倍,因为这样做可以有效地将线条减半。

%...
closepath
gsave
  2 setlinewidth
  black stroke
grestore
gold fill

答案 1 :(得分:1)

PostScript缺少一个防滑操作符,它应该将绘制限制在当前路径之外。有clip,它限制绘画到内部,但这对这个问题没有帮助。

如前所述,您可以{双倍线宽stroke,然后fill白色,但如果您想将其绘制在其他内容之上,则该策略会模糊下面的内容。

或者你可以让这颗星变得更大(我怀疑,但是没有通过currentlinewidth 2 5 sqrt 2 mul 5 div add sqrt mul 2 div检查过),但只有在1 setlinejoin时才会看起来正确。