2010-03-17 5 views
1

У меня есть следующий код Постскриптум:Вращающийся текст припиской

/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 

Функция просто выводит текст, основанный на X, Y со-ords и текст для отображения, существует также переменная для вращения. По какой-то причине, когда я выводил текст с поворотом> 0 градусов, все остальные тексты, которые появляются после этого, не будут работать, я не могу понять, почему это так. В приведенном выше примере отображаются «text1» и «text2», но не 3 и 4.

ответ

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 
3

rotate команда в Postscri pt вращает все координатное пространство, а не отдельную операцию рисования. 90 rotate откладывает все дальнейшие операции с верхней части листа.

+0

Если вы хотите повернуть только текст, но не все остальное на странице, вызовите gsave перед вращением и grestore после вывода текста. – pi3

0

"Поворот" команды и текущее преобразование матрицы (CTM) используется для поворота отображения текста в Postscript

повернуть: 45 вращаются 10 10 MoveTo (Postscript) показать

CTM Матрица: [0,7071 0,7071 -0,7071 0,7071 0 0] CONCAT 10 10 MoveTo (Postscript) показать

Смежные вопросы