首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostScript路径组合

PostScript路径组合
EN

Stack Overflow用户
提问于 2012-07-02 22:37:29
回答 2查看 552关注 0票数 1

我刚刚开始学习PostScript,以便为LaTeX生成图形,我不知道如何将路径与其本身结合起来,因此笔画只会影响绘制形状的外部边界。我的代码如下:

代码语言:javascript
复制
/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知识。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 03:04:44

最简单的方法是先完成笔划,然后再填。你可能想要加倍你的线宽,因为这样做有效地削减了线的一半。

代码语言:javascript
复制
%...
closepath
gsave
  2 setlinewidth
  black stroke
grestore
gold fill
票数 2
EN

Stack Overflow用户

发布于 2013-04-01 12:05:56

PostScript缺少了一个反唇形操作符,该操作符应该将绘制限制在当前路径之外。有clip,它将绘画限制在内部,但这无助于解决这个问题。

正如前面所建议的那样,您可以以双线宽为stroke,然后是fill白色,但是如果您想在其他东西的基础上涂上它,这个策略会模糊下面的任何内容。

或者你可以让恒星变大一点(我怀疑,但currentlinewidth 2 5 sqrt 2 mul 5 div add sqrt mul 2 div还没有确认),但只有在1 setlinejoin的情况下,这看起来才是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11302089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档