当前位置: 首页 > article >正文

PostScript基本语法

一、基本语法

以换行符作为语句的分隔符
以空格作为参数和符号的分隔符
以’%’作为注释行开始的标志
所有字符均使用ansi编码
拓展名’ps’/’eps’
采用操作数在前,操作符在后的结构。有多组操作数时从右往左按堆栈顺序
方括号表示数组。
圆括号表示字符串。

二、基本画图命令

PostScript采用的坐标系以左下角为原点,水平向右为x轴正方向,水平向左为y轴正方向。
pt是PostScript里的基本长度单位,1英寸为72pt,相当于屏幕的96个像素。因此,可以认为3个pt和4个像素大小相当。
PostScript通常情况下默认的页面大小是A4大小。

setlinewidth (width)

设置线宽(默认为1)

setrgbcolor (r, g, b)

设置颜色(默认为0,0为黑,1为白)

setgray (gray)

设置灰度

moveto (x,y)

移动到

lineto (x,y)

由所在点构造线段路径到(x, y)

arc (x, y, r, arc1, arc2)

构造以(x, y)为圆心,以r为半径,半径辐角从arc1到辐角arc2的圆弧路径

curveto (x1, y1, x2, y2, x3, y3, x4, y4)

以当前位置开始,(x1, y1)为起点, (x2, y2)和(x3, y3)为控制点, (x4,  y4)为终点,构造三次Bezier曲线路径
(x1, y1)可省略,此时默认为当前笔刷所在位置

rlineto (x, y)

由所在点构造线段路径到相对坐标

rcurveto (x1, y1, x2, y2, x3, y3, x4, y4)

以当前位置开始,(x1, y1)为起点, (x2, y2)和(x3, y3)为控制点, (x4,  y4)为终点,相对坐标构造三次Bezier曲线路径
(x1, y1)可省略,此时默认为当前笔刷所在位置

stroke ()

用当前的线宽和颜色

setlinecap (status)

设置线的末端形状(默认为1,矩形末端;2为圆形末端)

setlinejoin (status)

设置线的连接的形状(默认为1,矩形连接;2为圆形连接)

fill ()

以当前颜色填充闭合路径

newpath ()

开始一段闭合路径

closepath ()

结束闭合路径

setpagedevice ()

改变页面大小
例: <</PageSize [400 300]>> setpagedevice

三、坐标变换命令

gsave ()

在变换前,保存当前的坐标系

grestore ()

在画完变换后下坐标系的图形后,恢复当前坐标系

translate (x, y)

后面所画的图形都向右平移xpt,向上平移ypt

rotate (angle)

后面所画的图形都以(0, 0)点为轴心逆时针旋转角度angle

scale (s1, s2)

后面所画的图形都在x方向上变为原来的s1倍,在y方向上变为原来的s2倍

concat ([a, b, c, d, e, f])

后面所画的图形上的点都以下面的变换的值确定新位置:

四、显示字体

Post Script支持英文字母,希腊字母和数学公式。
所有数学公式的符号都是由ascii码表示。

findfont (font)

设置字体,参数为/Times(用来显示TimeNewRoman英文字体)或者/Symbol(用来显示希腊字母)。

scalefont (num)

设置字体大小

setfont ()

选中刚刚设置的字体

show ()

显示字体

例如,在画图区的左右角用16号字Times new roman显示字符串”Post Script”可以表达为:

/Times findfont
16 scalefont
setfont
0 8 moveto
(Post Script) show

五、颜色渐变

在Postscript语言里,颜色渐变用填充模板(Shading Pattern)实现。
颜色渐变填充模板有很多种。其中三角形网格是最简单的,也是用起来最方便的。

Shading Pattern用双书名号(<<>>)建立结构体。
定义宏替换可以使用反斜杠加宏名最后以def结束。

例如要画一条竖直的彩虹颜色条,可以这样定义竖直颜色填充模板:

/VerticalColorBar
<<
/PatternType 2
/Shading
<<
/ShadingType 5
/ColorSpace /DeviceRGB
/VerticesPerRow 2
/DataSource
[
0 80.5 0 0
1 80.5 0 0
0 71 0 0
1 71 0 0
0 51 1 0
1 51 1 0
0 30 1 1
1 30 1 1
0 10 0 1
1 10 0 1
0 00 0 0.5
1 00 0 0.5
]
>>
>>def

其中VerticalColorBar是宏名,前面加反斜杠表示这是个宏定义,后面用def表示宏定义结束。下面用这个宏定义画一个竖直矩形:

newpath
10 10 moveto
60 10 lineto
60 410 lineto
10 410 lineto
closepath
VerticalColorBar [10 0 0 50 10 10] makepattern
setpattern
fill

需要注意的是,在makepattern前面要有个矩阵,因为前面定义的填充模板不一定正好在所要填充的模板上。
即使所定义的填充模板与所要填充的区域正好重合,还是需要在makepattern前加一个单位矩阵,因为这是makepattern必须有的参数。
通过矩阵,还可以实现对填充模板的变换。例如,想要把前面的模板做成一行彩色字的填充,可以使用下面的代码

/Times findfont 32 scalefont setfont
0 16 moveto
VerticalColorBar [0 48 -24 0 192 0] makepattern
setpattern
(Hello World!) show

上面的代码相当于把定义的填充模板逆时针旋转了90度,因此可以看出把“上红下蓝”的填充模板变成了“左红右蓝”的字体填充。

参考资料:

https://baike.baidu.com/item/PostScript/2192822
http://www.lryc.cn/news/2413400.html

相关文章:

  • Handler机制(java层)
  • VirtualBox虚拟机网络怎么设置 VirtualBox虚拟机网络设置详细教程
  • 欧氏空间。
  • 文字竖着写怎么设置_微信置顶文字怎么设置 微信置顶文字的方法介绍|微信|置顶软硬件资讯川北在线...
  • 菜单栏的设计
  • 【博弈论】混合策略纳什均衡
  • PKI/CA基础知识整理
  • DSP芯片有什么特点?如何对DSP芯片进行分类?
  • SmartUpload
  • Union ADX 广告联盟系统介绍
  • 77. Combinations
  • Apache中VirtualHost配置说明
  • 编程软件索引2024
  • PHP基础详解(全)
  • PreferenceActivity简单用法
  • 天龙八部科举答题器
  • ModifyStyle函数的用法
  • ARM系列的命名含义及哪种ARM Cortex内核更适合我的应用
  • ic 查询网址
  • Linux服务器配置
  • windows10自动设置时间灰色怎么办
  • JQuery控制radio选中和不选中方法总结
  • 期货绝对稳赚的技巧
  • 计算机网络基础之以太网
  • kramer MTX3-34-M 34x34 8K 灵活模块化矩阵
  • 介绍一个新鲜玩意 开源的杀毒软件
  • ssm酒店管理系统
  • 播放器代码大全
  • juniper官网相关网址
  • Microsoft.XMLHttp的用法