2

我有以下后记代码:

/outputtext {
   /data exch def
   /rot exch def
   /xfont exch def
   /Times-Roman findfont
   xfont scalefont
   setfont
   /y1 exch def
   /x1 exch def
   x1 y1 moveto
   rot rotate
   data show
} def


% x y fontsize rotation (text) outputtext
20 300 12 0 (text1) outputtext
20 400 12 90 (text2) outputtext
20 500 12 90 (text3) outputtext
20 600 12 0 (text4) outputtext
showpage

该函数仅根据 ax、y 坐标和要显示的文本输出文本,还有一个用于旋转的变量。出于某种原因,当我输出旋转大于 0 度的文本时,之后出现的所有其他文本都不起作用,我似乎无法弄清楚为什么会这样。在上面的示例中,将显示“text1”和“text2”,但不会显示 3 和 4。

4

4 回答 4

3

Postscript 中的rotate命令旋转整个坐标空间,而不是单独的绘图操作。90 rotate将所有进一步的操作放在工作表的顶部。

于 2010-03-17T02:10:50.640 回答
2

找到它,需要做一个负旋转(所以如果它是旋转 90 度,那么它需要旋转 -90 度)

需要以下内容:

 rot neg rotate

所以函数变为:

/outputtext {
   /data exch def
   /rot exch def
   /xfont exch def
   /y1 exch def
   /x1 exch def
   /Times-Roman findfont
   xfont scalefont
   setfont
   x1 y1 moveto
   rot rotate
   data show

   rot neg rotate
} def
于 2010-03-17T02:04:54.357 回答
1

正如用户@pi3 在评论中所说:

如果您只想旋转页面上的某些文本而不旋转其余文本,请在旋转前调用 gsave 并在输出文本后调用 grestore

我相信@pi3 的回答应该不仅仅是评论,所以让我粘贴一些示例代码:

newpath
200 100 moveto
gsave
90 rotate
(Lorem Ipsum Dolor Sit Amet) show
grestore
于 2020-05-19T11:02:51.580 回答
0

“旋转”命令和电流变换矩阵 (CTM) 用于旋转 Postscript 中的显示文本

rotate : 45 rotate 10 10 moveto (Postscript) show

CTM 矩阵:[0.7071 0.7071 -0.7071 0.7071 0 0] concat 10 10 moveto (Postscript) show

于 2017-08-18T13:07:54.057 回答