canvas%
Racket では、独自の on-event メソッドを使用して独自のカスタム クラスを作成する方法を知っています。
(define my-canvas%
(class canvas%
(define/override (on-event event)
(cond ...));; handle the event
(super-new)))
(send canvas get-dc)
より多くの描画メソッドを持つように、返される描画コンテキストに同様の変更を加えたいと思います。カスタム クラスを作成すると、 で呼び出されたときに通常の代わりにそれを返すmy-dc%
方法を見つける必要があります 。これは可能ですか?my-canvas%
dc%
get-dc
より具体的には、my-dc%
次のようになります(ここで、定義済みdraw-circle
は組み込みを使用することになっていますdraw-arc
):
(define my-dc%
(class dc%
(define (draw-circle x y radius)
(draw-arc (- x radius) ; left
(- y radius) ; top
(* 2 radius) ; width
(* 2 radius) ; height
0 ; start-angle
(* 2 pi))) ; end-angle
(super-new)))
(send dc draw-circle 100 100 20)
他のすべての描画方法と同様に、後で円を描くだけで済むようにします。