我正在使用postscript绘制一个简单的矩形,如下所示
1 -1 scale 0 -300 translate newpath 88.9 117.25 moveto 131.6 117.25 lineto 88.9 259.75 lineto closepath fill 88.9 117.25 moveto 111.4 94.75 lineto 154.1 94.75 lineto 131.6 117.25 lineto closepath fill 131.6 117.25 moveto 154.1 94.75 lineto 154.1 237.25 lineto 131.6 259.75 lineto closepath fill %%EndDocument
结果是一个3D矩形.
但是当我添加以下代码时,矩形会以某个角度倾斜.
[ 0.9999999 0 -1 1 261 0 ] concat
我可以理解,这种行为是由于与CTM连接的矩阵中使用的值引起的.谁能解释上面矩阵中值的使用以及它如何影响绘图行为?
编辑:
非常感谢您提供的信息.实际上,我正在使用post script将位图转换为eps.为此,我将在Graphics对象上执行的所有操作转换为等效的post script命令.
我在后期脚本g.Transform=matrix
中使用C#进行转换[ matrix.Elements[0] ...... [matrix.Elements[5] ] concat
.从我用Google搜索来看,两者在功能上看起来与我相似,但绘制的eps的结果与位图图像不同.所以,我想知道postscript矩阵concat转换是如何工作的.谁能解释我转换为eps的方法出了什么问题?
CTM是电流变换矩阵,通常是3x3矩阵.在Postscript中,它表示为6元素数组,因为3x3 CTM中的3个元素是常量.Postscript CTM数组
[a b c d tx ty]
对应于3x3 CTM矩阵
a b 0 c d 0 tx ty 1
虽然它经常以转置形式出现(如链接文章中所述):
a c tx b d ty 0 0 1
在任何情况下,tx
与ty
控制翻译和其他值结合起来,其他转换.一些abcd
模式导致命名转换:旋转,缩放,反射和剪切.你给出的那个符合剪切模式(如果我们将0.9999999视为1):, 剪切量1 0 k 1
在哪里k
,在你的情况下是-1.