200 dup scale .5 setgray 0 0 3 3 rectfill
我们现在有一个灰色的正方形。
0 setgray 0 1 3 1 rectfill
在其中有一条黑色条纹。我们现在将交替填充该条纹,先白色再黑色:
{1 setgray 0 1 3 1 rectfill 0 setgray 0 1 3 1 rectfill} loop
您现在会看到一些黑白矩形的闪烁,它们比原来的黑条小。理想情况下,我们应该看到原始的灰色正方形。或者几乎是这样。今天在哪里可以获得这样的功能?
要查找大小为5的幻方并查看更有趣的动画序列:
wget http://www.complang.tuwien.ac.at/ulrich/gupu/l5.eps.gz
zcat l5.eps.gz | ghostscript -
几年前我曾试图解决这些问题。但它从未被整合到ghostscript或Xfree中。请参见this page。也许现在有更好的想法了?
编辑:阅读到目前为止的回复后,让我澄清一个问题。本质上,这个问题有两个独立的问题:
动画在语言层面上应该如何被视为?我认为,最好的方法是将每一帧视为单独的页面。通过使用
copypage
可以实现低成本的增量变化。遗憾的是,在第 3 级中,copypage
的语义已经改变为showpage
。很多年前,我对 ghostscript 进行了 小修改,延迟了所有可见变化直到copypage
或showpage
。这样,一个包含更改区域的单个XCopyArea
就可以在服务器(即显示器)上进行本地执行。如何同步实际的视觉变化,以避免在描述图形时不存在的伪影?你看到的不规则闪烁并不是 PostScript 的特权,它似乎存在于我所见过的任何双缓冲系统中。只需尝试在适当的系统中编写此程序即可。
进一步编辑:
为了获得正确的语言级别,即1级或2级,请执行以下操作(对于Ghostscript):systemdict /.setlanguagelevel known {2 .setlanguagelevel} if
编辑:我添加了这条评论,可能会吸引一些新的后记贡献者。