Scheme图形有多种奇怪之处

时间:2011-07-18 14:40:47

标签: graphics scheme

也许是因为我更好的判断,我决定尝试让图形在计划中运行。 (MIT / GNU)

为了开始,我写了

(define graphics-types (enumerate-graphics-types))
(define graphics (make-graphics-device (car graphics-types)))

弹出一个白色的窗口。调用

(graphics-draw-point graphics .5 0)

给出了预期的结果,即在窗口右侧(垂直于中心)的3/4处出现了一个小的黑色像素。但是,请致电

(graphics-erase-point graphics .5 0)

什么也没做。此外,最小化和恢复窗口消除了这一点,但实验表明,最小化总是清除整个窗口。

有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:1)

MIT Scheme中的graphics-erase-point过程的工作原理是将绘图模式更改为0,调用graphics-draw-point,然后将绘图模式更改回之前的状态。有关MIT Scheme绘图模式机制的更多信息,请访问MIT's drawing mode documentation

该错误似乎出现在graphics-bind-drawing-mode程序中,该程序在graphics-erase-point中用于更改绘图模式。最简单的解决方案是重新定义graphics-erase-point以使用graphics-set-drawing-mode。结果代码如下所示:

(define (graphics-erase-point device x y)
  (graphics-set-drawing-mode device 0)
  (graphics-draw-point device x y)
  (graphics-set-drawing-mode device 15))

15是默认绘图模式,我为了简单起见使用了它,但是当然可以智能地恢复绘图模式(我为你留下了这个练习)。