我刚开始学习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的了解。
答案 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
时才会看起来正确。