Scheme mred中缺少方法:canvas%?

Scheme mred中缺少方法:canvas%?,scheme,racket,Scheme,Racket,我曾经为Scheme程序制作过一个用户界面。它包括一个mred:canvas%,我想在其上使用绘图点绘制点。它的定义是: (define (naca-ui-init {...} #:airfoil-canvas-class (airfoil-canvas-class canvas%) {...}) 后来: (set! airfoil-canvas (new airfoil-canvas-c

我曾经为Scheme程序制作过一个用户界面。它包括一个mred:canvas%,我想在其上使用
绘图点绘制点。它的定义是:

(define (naca-ui-init
         {...}
         #:airfoil-canvas-class
         (airfoil-canvas-class canvas%)
         {...})
后来:

(set! airfoil-canvas
        (new
         airfoil-canvas-class
         (parent vertical-pane-2165)
         (horiz-margin 0)
         (min-width 350)
         (vert-margin 0)
         (gl-config #f)
         (stretchable-width #t)
         (enabled #t)
         (stretchable-height #t)
         (min-height 175)
         (label "Canvas")
         (style '(border))))
然而,当我尝试
(发送机翼画布绘制点15 30)
时,我得到:

send: no such method: draw-point for class: canvas%

 === context ===
/usr/local/lib/racket/collects/racket/private/class-internal.rkt:4543:0: obj-error
/home/jason/NACA/naca-ui.scm:29:8: plot-point
/home/jason/NACA/naca.scm:225:23
/home/jason/NACA/naca-ui.scm:21:10: inner
我是误读了这本书,还是有什么我不明白的


PS:有更多代表的人可以添加标签MrEd吗?这在这里很有意义,但是你需要1500个标签来添加新标签。

回答我自己的问题:简而言之,我的文档发霉了,我应该使用它。从那里很容易看出:

(send airfoil-canvas draw-point 15 30)
应该是:

(send (send airfoil-canvas get-dc) draw-point 15 30)

这些天你需要在绘图环境中进行绘图。

如果你在这里没有得到答案,你应该尝试.Done。如果我在那里得到一个好的答案,我将在这里总结。