我想在 PostScript 中顺利运行动画。要看看我想要什么,让我直接切换到 PostScript。调用 ghostscript,然后
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。请参阅 此页面。也许现在有一些更好的想法?
编辑:在阅读了到目前为止的回复之后,让我在这里澄清一个问题。本质上,这个问题有两个独立的问题:
应该如何从语言层面看动画?我相信,最好的方法是将每一帧视为一个页面。通过
copypage
增量更改可以轻松实现。可悲的是, 的语义copypage
只存在于级别 1 和 2 中。在级别 3 中, 的含义copypage
更改为showpage
。多年前,我对 ghostscript 进行了一些修改,以将所有可见的更改延迟到copypage
orshowpage
。这样,在服务器(即显示器)本地XCopyArea
执行包含更改区域的单。应该如何同步视觉显示上的实际变化以避免在所描述的图形中不存在的伪影?您看到的不规则闪烁不是 PostScript 的特权,它似乎存在于我迄今为止看到的任何双缓冲系统中。只需尝试在您认为合适的任何系统中进行编程。
进一步编辑:
要获得正确的语言级别,即级别 1 或 2(对于 ghostscript):
systemdict /.setlanguagelevel known {2 .setlanguagelevel} if
编辑:我添加此评论可能会吸引一些新的后记贡献者。