首页 文章

PostScript路径组合

提问于
浏览
1

我刚刚开始学习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 回答

  • 2

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

    如前所述,你可以 stroke 在双线宽,然后 fill 白色,但如果你想在其他东西上绘制这个,那么这个策略会掩盖下面的内容 .

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

  • 1

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

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

相关问题