我刚刚开始学习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等) . 这个问题的目的是 Build 我对PostScript的了解 .
2 回答
PostScript缺少一个防滑操作符,它应该将绘制限制在当前路径之外 . 有
clip
,它限制绘画到内部,但这对这个问题没有帮助 .如前所述,你可以
stroke
在双线宽,然后fill
白色,但如果你想在其他东西上绘制这个,那么这个策略会掩盖下面的内容 .或者你可以让这颗星变得更大(我怀疑,但是没有通过
currentlinewidth 2 5 sqrt 2 mul 5 div add sqrt mul 2 div
检查过),但只有1 setlinejoin
才能看出来 .最简单的方法是首先进行描边,然后进行填充 . 您可能希望将线宽加倍,因为这样可以有效地将线路减半 .