也许是因为我更好的判断,我决定尝试让图形在计划中运行。 (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)
什么也没做。此外,最小化和恢复窗口消除了这一点,但实验表明,最小化总是清除整个窗口。
有谁知道发生了什么事?
答案 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是默认绘图模式,我为了简单起见使用了它,但是当然可以智能地恢复绘图模式(我为你留下了这个练习)。